RNMTnkuK3uiPq8pNg0mTmh7gctVkFoc8.webp

在服务器运维中,SSH 是最常用的远程管理方式。相比传统的用户名 + 密码登录,SSH 密钥对登录在安全性和便捷性上都有明显优势。
本文将以 Ed25519 算法为例,介绍一套通俗易懂、可直接照做的 SSH 密钥对登录配置流程。


一、为什么选择 Ed25519

Ed25519 是当前 SSH 中非常推荐的密钥算法,主要优点有:

如果你的系统支持 Ed25519(基本所有新系统都支持),优先选择它。


二、SSH 密钥对登录的基本原理

SSH 密钥对由两部分组成:

登录时流程如下:

  1. 客户端使用私钥向服务器发起认证请求
  2. 服务器使用已保存的公钥进行验证
  3. 验证成功后直接登录,无需输入服务器密码

三、本地生成 Ed25519 密钥对

在本地终端执行以下命令:

ssh-keygen -t ed25519 -a 64 -C "your_comment"

参数说明:

执行后会提示:

生成完成后,默认文件位置为:


四、将公钥部署到服务器

方法一:使用 ssh-copy-id(推荐)

ssh-copy-id -i ~/.ssh/id_ed25519.pub user@server_ip

该命令会自动将公钥写入服务器的 authorized_keys 文件中。

方法二:手动配置

  1. 查看本地公钥内容:

    cat ~/.ssh/id_ed25519.pub
  2. 登录服务器,将公钥追加到文件:

    ~/.ssh/authorized_keys
  3. 设置正确的权限:

    chmod 700 ~/.ssh
    chmod 600 ~/.ssh/authorized_keys

五、使用密钥方式登录服务器

执行以下命令测试登录:

ssh -i ~/.ssh/id_ed25519 user@server_ip

如果没有报错并成功登录,说明密钥登录已配置成功。


六、服务器端加强安全配置(推荐)

在确认密钥登录可用后,可以关闭密码登录,提升服务器安全性。

编辑服务器 SSH 配置文件:

sudo vi /etc/ssh/sshd_config

确保以下配置存在或修改为:

PubkeyAuthentication yes
PasswordAuthentication no
PermitRootLogin no

保存后重启 SSH 服务:

sudo systemctl restart sshd

⚠️ 注意:一定要先确认当前会话可以使用密钥登录,再关闭密码登录。


七、使用 ssh-agent 简化登录体验

如果私钥设置了密码,可以使用 ssh-agent 避免频繁输入。

eval "$(ssh-agent -s)"
ssh-add ~/.ssh/id_ed25519

之后在当前会话中连接服务器将不再重复输入私钥密码。


八、配置 SSH 客户端快捷登录(可选)

编辑本地 ~/.ssh/config 文件:

Host myserver
  HostName server_ip
  User user
  IdentityFile ~/.ssh/id_ed25519
  IdentitiesOnly yes

以后只需执行:

ssh myserver

九、常见问题排查

1. 提示 Permission denied (publickey)

重点检查:

2. 查看详细调试信息

ssh -v user@server_ip

可帮助快速定位认证失败原因。


十、总结

使用 Ed25519 SSH 密钥对登录可以显著提升服务器安全性,并减少日常运维的登录成本。
完整流程可以概括为:

  1. 本地生成 Ed25519 密钥对
  2. 将公钥部署到服务器
  3. 验证密钥登录
  4. 关闭密码登录,强化安全

这套配置方式简单、高效、适用于绝大多数 Linux 服务器,是现代运维的标准做法。