今天手把手教你配置 Linux 服务器间的免密登录,学会了这招,别人还在敲密码的时候,你已经优雅地完成了十台服务器的部署。
为什么要免密登录?
传统的 SSH 登录每次都要输入密码,这在单台服务器上问题不大,但当你要管理几十上百台服务器,或者需要编写自动化脚本批量执行命令时,密码就成了拦路虎。免密登录基于 SSH 密钥对认证,公钥丢给目标服务器,私钥自己留着,每次登录就像刷脸一样,安全又高效。
环境准备
假设你有两台 Linux 服务器:
- 客户端(发起登录的机器):192.168.1.100
- 服务端(被登录的机器):192.168.1.101
确保两台机器都安装了 OpenSSH 服务(绝大多数 Linux 发行版默认安装)。
生成 SSH 密钥对
生成密匙对
登录客户端服务器,执行以下命令生成密钥对:
ssh-keygen -t rsa
一路回车使用默认配置,会在用户主目录下的.ssh文件夹生成两个文件:
- id_rsa:私钥(打死不能泄露!)
- id_rsa.pub:公钥(可以随意分发)
分发公钥到服务端
将客户端的公钥追加到服务端的authorized_keys文件中
使用 ssh-copy-id
如果你安装了ssh-copy-id工具(CentOS/RHEL 需要先安装openssh-clients包),直接执行:
ssh-copy-id username@192.168.1.101
输入服务端的密码,公钥就会自动写入。
测试免密登录
在客户端执行:
ssh username@192.168.1.101
如果成功登录且没有提示输入密码,恭喜你,配置成功!
常见问题排查
- 权限问题:~/.ssh目录权限必须是 700,authorized_keys权限必须是 600,否则 SSH 会拒绝认证。
- 密钥格式错误:确保authorized_keys文件中每行一个公钥,且格式正确。
- SELinux 或防火墙:如果是 CentOS/RHEL,检查 SELinux 策略或防火墙是否拦截了 SSH 连接。
进阶技巧
- 多台服务器互信:重复上述步骤,让所有服务器互相持有对方公钥。
- 密钥对管理:定期更新密钥,避免长期使用同一套密钥带来安全风险。
别再让密码拖慢你的脚步,赶紧把这套免密登录配置玩明白。下次有人还在手动敲密码,你就可以优雅地甩出一句:“还在输密码?格局小了!”