免秘钥登录

来源:互联网 发布:为什么外国人显老 知乎 编辑:程序博客网 时间:2024/06/05 12:04

1、问题背景

原先有三台服务器,之间是可以免秘钥登录的,但是其中一台重做了系统。这个时候再从机器1上免秘钥登录到机器2上(重做系统),就需要输入密码。但是之前已经有过什么公钥之类的。下面我们就来分析。

2、问题分析与解决

  • ssh 无密码登录是要使用公钥与私钥。linux下可以用用ssh-keygen生成公钥/私钥对

  • 既然机器2上重做系统了,name机器2上的/home/用户/.ssh这个目录肯定都没有了,当然该目录下的当前你所用的用户的公钥和私钥什么的也都没有。

  • 所以,我们需要再机器上2上生成公钥和秘钥,然后将公钥发到另外两台机器上的au的文件中,这样机器1和机器3就都认识机器2了。就可以免秘钥登录过去。

3、具体解决步骤

  • 在机器2上下生成公钥/私钥对。
[bfd_hz@bgsbtsp0007-dqf ~]$ ssh-keygen -t rsa -P ''

-P表示密码,-P ” 就表示空密码,也可以不用-P参数,这样就要三车回车,用-P就一次回车。
它在/home/bfd_hz/下生成.ssh目录,.ssh下有id_rsa和id_rsa.pub。
把机器2下的id_rsa.pub复制到B机下,在机器2上的.ssh/authorized_keys文件里。可以ftp传,也可以scp传过去,这时候由于是第一次需要输入密码。

  • 这个时候我们到机器1上去执行
[bfd_hz@bgsbtsp0006-dqf .ssh]$ cat id_rsa.pub.bak >> authorized_keys

由于机器1上本身也有一个公钥,为了区分出来,我们在机器2上的公钥后面加一个.bak的后缀以示区别。

4、看似问题已经解决了,确实是可以免秘钥过去,但是还是有一个警告。。。

用OpenSSH的人都知ssh会把你每个你访问过计算机的公钥(public key)都记录在~/.ssh/known_hosts。当下次访问相同计算机时,OpenSSH会核对公钥。如果公钥不同,OpenSSH会发出警告,避免你受到DNS Hijack之类的攻击。

所以我们需要know_hosts中的关机机器2上原先的的认证内容给删除,添加新的认证内容。并将该文件拷贝到三台服务器上

[bfd_hz@bgsbtsp0006-dqf .ssh]$ cat id_rsa.pub.bak >> known_hosts