【帮助中心】Linux SSH 免密登录教程,实现服务器之间免密码远程连接

2026-10-14 04:42:37丨 发布者:云天域--技术

管理多台 Linux 云服务器时,每次远程连接都输入密码比较麻烦,尤其是配置 rsync、scp、crontab 自动同步任务时,无法自动输入密码。SSH 免密登录通过密钥认证,实现服务器之间无需密码直接登录,是运维自动化的基础配置。

一、SSH 免密原理

简单来说:在本地服务器生成一对密钥(公钥 + 私钥),私钥留在本机,公钥上传到目标服务器的 authorized_keys 文件。连接时双方密钥自动校验,验证通过即可免密登录。

二、生成密钥对(本地服务器执行)

ssh-keygen

执行命令后一路回车,不需要设置密钥密码,默认会在~/.ssh/目录生成两个文件:

  • id_rsa :私钥(妥善保管,不要泄露)
  • id_rsa.pub :公钥(需要放到目标服务器)
如果提示文件已存在,可以选择覆盖或者直接使用已有密钥。

三、推送公钥到目标服务器

ssh-copy-id root@123.123.123.123

替换root为目标账号,123.123.123.123替换为目标服务器 IP,输入一次目标服务器密码,自动完成公钥部署。

如果 SSH 端口不是默认 22 端口:
ssh-copy-id -p 2222 root@123.123.123.123

四、测试免密登录

ssh root@123.123.123.123

正常情况下,不需要输入密码,直接登录服务器即代表配置成功。

五、手动上传公钥(ssh-copy-id 不可用时)

部分精简系统没有 ssh-copy-id 命令,可以手动追加公钥:

# 将公钥内容输出并追加到远程服务器的认证文件
cat ~/.ssh/id_rsa.pub | ssh root@123.123.123.123 "mkdir -p ~/.ssh && cat >> ~/.ssh/authorized_keys"

六、常见问题排查

  1. 免密配置完成依旧需要输入密码:检查目标服务器~/.ssh目录权限,权限过大会导致密钥失效
chmod 700 ~/.ssh
chmod 600 ~/.ssh/authorized_keys
  1. 防火墙 / 安全组:确认目标服务器 22 端口放行
  2. 密钥泄露风险:私钥文件不要对外分享,一旦泄露建议重新生成密钥

总结

SSH 免密登录可以省去频繁输入服务器密码的操作,结合前面学到的 rsync、crontab 命令,能够搭建自动化备份、跨服务器同步任务,提升云服务器运维效率。