最近在部署一套文件系统时,遇到一个挺常见的需求:需要远程给客户机安装软件,同时还要能无密码SSH访问、方便传文件。每次输入root密码确实麻烦,也容易打断自动化流程。那就用ssh key生成公钥和私钥来搞定验证,省得每次都敲密码。
服务器架构
系统:CentOS 6.5 x64
主控端A:192.168.0.150
远端主机B:192.168.0.151
原理
简单说,SSH密钥对就像一把钥匙和一把锁。私钥是钥匙,放在本地(主控端A);公钥是锁,放在远程(远端主机B)。拿着钥匙去开锁,就是从主控端A免密码登录到远端主机B的过程。这个机制在Linux运维里非常实用,既安全又高效。
步骤
1. 在主控端A主机上生成无密码SSH访问的公钥和私钥文件
[root@localhost ~]# ssh-keygen -t rsa

执行命令后连续按三次回车,就可以生成默认的密钥对。私钥保存在 /root/.ssh/id_rsa,公钥则在 /root/.ssh/id_rsa.pub。
2. 从主控端上传公钥到远端主机B上
[root@localhost ~]# ssh-copy-id -i /root/.ssh/id_rsa.pub root@192.168.0.151

这一步会提示输入远端主机B的root密码,只需要输入一次,公钥就会被自动追加到B机的 /root/.ssh/authorized_keys 文件中。上传完成后,密钥对就算正式生效了。
3. 在主控端测试无密码SSH远程远端主机B
[root@localhost ~]# ssh root@192.168.0.151
执行后,如果发现不再要求输入root密码,直接登录成功,就说明配置生效了。整个流程下来,也就是三行命令的事,但后续的运维效率提升可不是一点点。
