管理多台 Linux 云服务器时,每次远程连接都输入密码比较麻烦,尤其是配置 rsync、scp、crontab 自动同步任务时,无法自动输入密码。SSH 免密登录通过密钥认证,实现服务器之间无需密码直接登录,是运维自动化的基础配置。
简单来说:在本地服务器生成一对密钥(公钥 + 私钥),私钥留在本机,公钥上传到目标服务器的 authorized_keys 文件。连接时双方密钥自动校验,验证通过即可免密登录。
ssh-keygen
执行命令后一路回车,不需要设置密钥密码,默认会在~/.ssh/目录生成两个文件:
如果提示文件已存在,可以选择覆盖或者直接使用已有密钥。
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 命令,可以手动追加公钥:
# 将公钥内容输出并追加到远程服务器的认证文件
cat ~/.ssh/id_rsa.pub | ssh root@123.123.123.123 "mkdir -p ~/.ssh && cat >> ~/.ssh/authorized_keys"
~/.ssh目录权限,权限过大会导致密钥失效chmod 700 ~/.ssh
chmod 600 ~/.ssh/authorized_keys
SSH 免密登录可以省去频繁输入服务器密码的操作,结合前面学到的 rsync、crontab 命令,能够搭建自动化备份、跨服务器同步任务,提升云服务器运维效率。