Linux ssh远程登陆方式:密码与公钥

SSH免密码登录

一,需要实现的效果:

  1. 有两台服务器: "192.168.12.27" 和"192.168.12.26"
  2. 需要实现: 服务器"192.168.12.27" 实现ssh无密码链接服务器"192.168.12.26"

二,操作步骤(单项):

  1.  登录服务器192.168.12.27 cd指定文件夹: cd ~/.ssh
  2.  ssh-keygen -t [rsa|dsa],将会生成密钥文件和私钥文件 id_rsa,id_rsa.pub或id_dsa,id_dsa.pub
  3.  将 .pub 文件复制到192.168.12.26服务器的 .ssh 目录, 在26服务器中 cat id_dsa.pub >> ~/.ssh/authorized_keys
  4.  大功告成,从192.168.12.27机器登录192.168.12.26机器的目标账户,不再需要密码了;(直接运行 #ssh 192.168.12.26 )

三,设置文件和目录权限:要保证.ssh和authorized_keys都只有用户自己有写权限。否则验证无效。

  1.     设置.ssh目录权限: chmod 700 -R ~/.ssh
  2.     设置authorized_keys权限: chmod 600 authorized_keys


备注: 在使用过程中遇到一个问题,弄了大半天才解决掉,问题是 在使用jenkins进行构建时27服务器远程构建26服务器执行sh脚本,而脚本中需要26服务器拷贝27服务器中文件,这就出现了双向免密. 在操作时 单项一直很好用,只要另一台进行免密生成以及拷贝写入后 就不好用. 经过一下午的排查 找到解决办法

四,双向免密操作步骤(双向):

  1.  27服务器ssh-keygen -t rsa 生成密钥文件和私钥文件 id_rsa,id_rsa.pub或id_dsa,id_dsa.pub
  2.  将.pub文件复制到"26"服务器的.ssh目录, 并cat id_dsa.pub >> ~/.ssh/authorized_keys
  3.  "27"服务器运行 #ssh 192.168.12.26
  4.  免密成功后 删除"27"服务器中生成的 .pub文件(一定要删除,巨坑................)
  5.  删除"26"服务器中拷贝的.pub文件(一定要删除,巨坑................)
  6.  在"26"服务器中 执行ssh-keygen -t rsa 生成密钥文件和私钥文件 id_rsa,id_rsa.pub或id_dsa,id_dsa.pub
  7.  将.pub文件复制到"27"服务器的.ssh目录, 并cat id_dsa.pub >> ~/.ssh/authorized_keys
  8.  删除"26"服务器生成的.pub文件(一定要删除,巨坑................)
  9.  删除"27"服务器中拷贝的.pub文件(一定要删除,巨坑................)
  10.  "26"服务器运行 #ssh 192.168.12.26 

不知道为什么 只要做双向免密 并且保留拷贝的.pub已经自己生成的.pub 一定会有一方无法免密 ,


如果"27"服务器针对多个服务器时,27生成的.pub 其他服务器公用同一公钥

你可能感兴趣的:(ssh)