SSH 密钥配置的核心其实只有三步:妥善保存私钥、将公钥正确部署到服务器,以及严格设置服务器端权限。更实用的做法是,优先使用 ed25519 算法生成一对带 passphrase 的 SSH 密钥;随后借助 ssh-copy-id 将公钥准确写入 authorized_keys,并同步设置正确权限,目录通常使用 chmod 700,文件使用 600;然后检查 sshd_config,确认 PubkeyAuthentication yes 已启用,而 PasswordAuthentication no 建议在密钥登录验证成功后再关闭,最后别忘记重启 sshd 服务让配置生效。

先抓住关键操作和底层逻辑,不必被复杂术语影响理解。SSH 密钥登录并不是什么“进阶功能”,而是 Linux 服务器、云主机和远程运维中非常基础的安全配置,重点始终围绕私钥管理、公钥部署以及服务器权限控制这三个方面展开。
密钥生成:选择合适算法并设置保护
实际部署中,推荐优先使用 ed25519 算法,它具备生成速度快、安全性高、密钥体积小等优势。如果目标服务器环境较旧,例如 CentOS 6 或部分老旧网络设备,再考虑退回使用 rsa -b 4096。
- 生成命令示例:
ssh-keygen -t ed25519 -C "your_email@example.com" - 执行过程中会提示保存路径,默认一般为
~/.ssh/id_ed25519,通常建议直接使用默认路径,方便 OpenSSH、MobaXterm 等工具自动识别 - 务必设置 passphrase(密钥口令),即使只是基础密码也比没有更安全——这是私钥泄露或丢失后的最后一道安全防线
公钥部署:准确写入 authorized_keys
部署 SSH 公钥时不能随意复制粘贴,必须将内容规范写入目标服务器的 ~/.ssh/authorized_keys 文件中,同时确保目录权限和文件权限设置正确,否则可能导致 SSH 登录失败。
- 最推荐的方式:
ssh-copy-id -i ~/.ssh/id_ed25519.pub user@host(可自动处理路径、写入及权限问题) - 如需手动配置,请确认目标主机执行:
chmod 700 ~/.ssh且chmod 600 ~/.ssh/authorized_keys - 注意:
authorized_keys文件中每一行只能对应一条公钥,不能出现多余空行、断行错误或乱码字符
服务端验证:确认 SSH 配置已生效
仅仅上传了公钥并不代表配置完成,服务器上的 SSH 服务还必须正确识别并允许密钥认证。排查时重点看以下两个配置项:
- 确认
/etc/ssh/sshd_config中包含PubkeyAuthentication yes(多数系统默认已开启) - 如果计划关闭密码登录,可设置为
PasswordAuthentication no,但一定要先验证 SSH 密钥登录正常可用,避免把自己锁在服务器外 - 修改完配置后记得重启服务:
sudo systemctl restart sshd(Linux 环境)或使用对应系统的 SSH 重启命令
MobaXterm 用户特别注意
MobaXterm 自带 SSH 密钥生成器,默认生成的是 OpenSSH 格式,兼容性通常较好;如果导入现有私钥,需要确认文件格式为 PEM 或 OpenSSH。它并不直接支持 PuTTY 的 .ppk 格式,这种情况下需要先通过 PuTTYgen 转换。
- 在 MobaXterm 新建 SSH 会话时,进入 “Advanced SSH settings” → 勾选 “Use private key”,然后指定私钥文件路径
- SFTP 连接通常也会自动复用该 SSH 私钥,无需再做额外设置
- 密钥口令通常只需输入一次,MobaXterm 可以进行缓存(勾选 “Sa ve password”),但在生产环境或高安全场景下应谨慎使用
