SSH免密码登录
一,需要实现的效果:
- 有两台服务器: "192.168.12.27" 和"192.168.12.26"
- 需要实现: 服务器"192.168.12.27" 实现ssh无密码链接服务器"192.168.12.26"
二,操作步骤(单项):
- 登录服务器192.168.12.27 cd指定文件夹: cd ~/.ssh
- ssh-keygen -t [rsa|dsa],将会生成密钥文件和私钥文件 id_rsa,id_rsa.pub或id_dsa,id_dsa.pub
- 将 .pub 文件复制到192.168.12.26服务器的 .ssh 目录, 在26服务器中 cat id_dsa.pub >> ~/.ssh/authorized_keys
- 大功告成,从192.168.12.27机器登录192.168.12.26机器的目标账户,不再需要密码了;(直接运行 #ssh 192.168.12.26 )
三,设置文件和目录权限:要保证.ssh和authorized_keys都只有用户自己有写权限。否则验证无效。
- 设置.ssh目录权限: chmod 700 -R ~/.ssh
- 设置authorized_keys权限: chmod 600 authorized_keys
备注: 在使用过程中遇到一个问题,弄了大半天才解决掉,问题是 在使用jenkins进行构建时27服务器远程构建26服务器执行sh脚本,而脚本中需要26服务器拷贝27服务器中文件,这就出现了双向免密. 在操作时 单项一直很好用,只要另一台进行免密生成以及拷贝写入后 就不好用. 经过一下午的排查 找到解决办法
四,双向免密操作步骤(双向):
- 27服务器ssh-keygen -t rsa 生成密钥文件和私钥文件 id_rsa,id_rsa.pub或id_dsa,id_dsa.pub
- 将.pub文件复制到"26"服务器的.ssh目录, 并cat id_dsa.pub >> ~/.ssh/authorized_keys
- "27"服务器运行 #ssh 192.168.12.26
- 免密成功后 删除"27"服务器中生成的 .pub文件(一定要删除,巨坑................)
- 删除"26"服务器中拷贝的.pub文件(一定要删除,巨坑................)
- 在"26"服务器中 执行ssh-keygen -t rsa 生成密钥文件和私钥文件 id_rsa,id_rsa.pub或id_dsa,id_dsa.pub
- 将.pub文件复制到"27"服务器的.ssh目录, 并cat id_dsa.pub >> ~/.ssh/authorized_keys
- 删除"26"服务器生成的.pub文件(一定要删除,巨坑................)
- 删除"27"服务器中拷贝的.pub文件(一定要删除,巨坑................)
- "26"服务器运行 #ssh 192.168.12.26
不知道为什么 只要做双向免密 并且保留拷贝的.pub已经自己生成的.pub 一定会有一方无法免密 ,
如果"27"服务器针对多个服务器时,27生成的.pub 其他服务器公用同一公钥