SSH免密登录核心是三步:本地生成密钥对(推荐ed25519)、用ssh-copy-id或手动部署公钥至服务器authorized_keys、严格配置服务端sshd_config与目录权限(.ssh 700,authorized_keys 600)。

直接用公钥认证替代密码登录,核心就三件事:本地生成密钥对、把公钥安全放到服务器上、确保服务端配置和权限正确。不设密码的私钥能实现真免密,但更推荐加个短语保护——既保自动化又防私钥泄露后被直接滥用。
在客户端生成密钥对
打开本地终端,运行:
-
ssh-keygen -t ed25519 -C "your_email@example.com"(优先选 ed25519,更快更安全;若需兼容老系统,改用
-t rsa -b 4096) - 按回车使用默认路径(
~/.ssh/id_ed25519和~/.ssh/id_ed25519.pub) - 输入并确认一个密码短语(passphrase)——不是必须空,而是建议设;它加密私钥文件本身,SSH agent 可缓存解锁状态,兼顾安全与便利
把公钥部署到目标服务器
最稳妥的方式是用 ssh-copy-id 自动完成:
Linux AI 服务器 — 将 Linux 服务器转换为本地 AI 推理集群。使用 systemd、NVIDIA CUDA 实现无头 Linux AI,零 GUI 开销。
- ssh-copy-id -i ~/.ssh/id_ed25519.pub user@server_ip
- 它会自动创建
~/.ssh目录、写入authorized_keys、设置正确权限(600) - 如果命令不可用(如某些精简版系统),可手动操作:
scp ~/.ssh/id_ed25519.pub user@server_ip:/tmp/
登录服务器后执行:mkdir -p ~/.ssh && chmod 700 ~/.sshcat /tmp/id_ed25519.pub >> ~/.ssh/authorized_keys && chmod 600 ~/.ssh/authorized_keys
检查服务端 SSH 配置与权限
登录服务器,确认以下几点都满足:
-
/etc/ssh/sshd_config 中启用关键选项:
PubkeyAuthentication yesAuthorizedKeysFile .ssh/authorized_keys
(RSAAuthentication已过时,ed25519 不依赖它) -
权限必须严格:
~/.ssh目录权限为700(drwx------)authorized_keys文件权限为600(-rw-------)
私钥若传到服务器上做反向登录,也必须是600 - 重启服务生效:sudo systemctl restart sshd
验证与后续加固
回到本地,尝试连接:
- ssh -o PreferredAuthentications=publickey user@server_ip(强制只走公钥,快速排除干扰)
- 首次连接仍会提示确认 host key,之后就应直接登录
- 确认成功后,可考虑禁用密码登录增强安全:
在sshd_config中设PasswordAuthentication no,再重启 sshd
⚠️ 操作前务必确保已有另一路可用登录方式(如控制台或已配置好的另一密钥),避免锁死

















