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

前提条件

  1. 成功登录到您的 Linux 服务器。
  2. 具有 sudo 权限(这是默认的,如果您之前创建了 adminroot 用户并赋予了 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

文件历史

撰写