Skip to content
字数
1436 字
阅读时间
6 分钟

前提条件 ​

  1. 成功登录到您的 Linux 服务器。
  2. 具有 sudo 权限(这是默认的,如果您之前创建了 admin 或 root 用户并赋予了 sudo 权限)。
  3. 已经获得了对方(或您自己)的 SSH 公钥内容。

请根据实际情况,将教程中的 目标用户名 替换为您想要设置密钥登录的实际用户名(例如 seconduser )。


服务器设置 SSH 密钥登录教程(导入公钥) ​

本教程指导您如何在 Linux 服务器上为指定用户设置 SSH 密钥登录。这是最安全、推荐的服务器访问方式。

请注意: 您需要先从要登录的用户那里获取他们的 完整 SSH 公钥内容。公钥通常以 ssh-rsa AAAAB3NzaC1yc2E... 或 ssh-ed25519 AAAAC3NzaC1lZDI1NTE5... 开头,并以用户的邮箱或注释结尾。


步骤一:登录到您的服务器 ​

首先,使用您自己的 SSH 密钥登录到服务器。例如,如果您使用 root 用户登录:

bash
ssh -i ~/.ssh/id_rsa root@您的服务器IP地址

(请将 您的服务器IP地址 替换为实际 IP)

步骤二:创建或确认目标用户账户 ​

如果您要为新用户设置密钥登录,您需要先在服务器上为他们创建一个系统账户。如果该用户账户已经存在,请跳过此步。

  1. 创建新用户账户(如果不存在):

    将

    bash
    目标用户名

    替换为实际的用户名

    seconduser
    bash
    sudo adduser 目标用户名
    • 系统会提示您为该用户设置一个密码。请设置一个强密码。 这个密码在禁用 SSH 密码登录后不会用于 SSH 连接,但可能在用户执行 sudo 命令时使用。
    • 接着会提示您填写一些用户信息(例如姓名、电话等),这些是可选的,您可以直接一路按回车键跳过。

步骤三:为目标用户准备 .ssh 目录和 authorized_keys 文件 ​

SSH 服务要求用户的公钥存放在其主目录下的 .ssh 目录中,并且这两个目录和文件的权限必须非常严格。

  1. 创建 .ssh 目录并设置正确权限:

    Bash

    # 创建 .ssh 目录
    sudo mkdir -p /home/目标用户名/.ssh
    
    # 设置 .ssh 目录权限:只有所有者(目标用户)有读写执行权限 (700)
    sudo chmod 700 /home/目标用户名/.ssh
    
    # 更改 .ssh 目录的所有者为目标用户
    sudo chown 目标用户名:目标用户名 /home/目标用户名/.ssh

    (请将

    目标用户名

    替换为实际的用户名)

步骤四:将公钥添加到目标用户的 authorized_keys 文件 ​

这是将公钥导入服务器的核心步骤。

  1. 将您已获取的公钥内容添加到 authorized_keys 文件:

    • 请确保您已经从对方那里获得了完整的、正确的公钥字符串。
    • 执行以下命令。将 [对方的完整公钥内容] 替换为您已经复制的公钥字符串,并把 目标用户名 替换为实际的用户名。

    Bash

    echo "[对方的完整公钥内容]" | sudo tee -a /home/目标用户名/.ssh/authorized_keys

    示例: 如果对方给你的公钥是 ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQDl... user@example.com,那么命令就是:

    Bash

    echo "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQDl... user@example.com" | sudo tee -a /home/目标用户名/.ssh/authorized_keys
    • tee -a 命令会将公钥内容追加到文件的末尾,这样就不会覆盖文件中已有的其他公钥。
  2. 设置 authorized_keys 文件的正确权限和所有者:

    这一步非常关键,SSH 服务会严格检查这些权限。

    Bash

    # 设置 authorized_keys 文件权限:只有所有者(目标用户)有读写权限 (600)
    sudo chmod 600 /home/目标用户名/.ssh/authorized_keys
    
    # 更改 authorized_keys 文件所有者为目标用户
    sudo chown 目标用户名:目标用户名 /home/目标用户名/.ssh/authorized_keys

    (请将 目标用户名 替换为实际的用户名)

步骤五:赋予目标用户 sudo 权限(可选) ​

如果这个新用户需要执行管理命令(例如安装软件、重启服务),您需要将他们添加到 sudo 用户组。如果他们只是普通用户,不需要管理员权限,可以跳过此步。

  • 对于 Ubuntu/Debian 系统:

    Bash

    sudo usermod -aG sudo 目标用户名
  • 对于 CentOS/RHEL 系统:

    Bash

    sudo usermod -aG wheel 目标用户名

    (请将

    目标用户名

    替换为实际的用户名)

步骤六:通知对方进行测试登录 ​

完成以上所有步骤后,您就可以通知对方,让他们在自己的电脑上尝试使用他们的私钥登录服务器了。

对方在自己的电脑上执行的登录命令示例:

Bash

ssh -i /path/to/their/private_key 目标用户名@您的服务器IP地址

例如:ssh -i ~/.ssh/id_rsa seconduser@47.122.153.165

  • 如果对方的私钥有密码短语,系统会提示他们输入。
  • 如果是第一次连接该服务器,对方可能需要输入 yes 来确认服务器指纹。

完成这些步骤后,该用户就能够通过他们的 SSH 密钥安全地登录到服务器了。

贡献者 ​

The avatar of contributor named as Cai Hongyu Cai Hongyu
The avatar of contributor named as RainbowRain9 RainbowRain9

文件历史 ​

用 ♥ 撰写