两台 Linux 主机之间配置信任关系(以及如何解除)

  主机之间的 ssh 信任,简单地说,就是主机之间使用 ssh 命令登录主机不需要密码。

  一、主机之间配置信任关系
  将主机 A (47.100.247.242) 作为信任主机,主机 B(101.132.242.27) 作为远程主机,配置实现主机 A 免密登录到主机 B,主要步骤如下:

  1. 在主机 A 中产生相应的私钥和公钥(id_rsa 和 id_rsa.pub)
[testuser@cloudgw ~]$ pwd
/home/testuser
[testuser@cloudgw ~]$ ssh-keygen -t rsa

  输入命令后,一路回车即可。

  1. 在主机 A 中添加自己的私钥
[testuser@cloudgw ~]$ cd .ssh/
[testuser@cloudgw .ssh]$ ssh-add id_rsa
Identity added: id_rsa (id_rsa)

  备注: 如果提示 Could not open a connection to your authentication agent,终端做如下操作:

[testuser@cloudgw .ssh]$ ssh-agent bash 
[testuser@cloudgw .ssh]$ ssh-add id_rsa
  1. 将主机 A 中的公钥 id_rsa.pub 拷贝到主机 B 的 .ssh目录下
[testuser@cloudgw .ssh]$ scp id_rsa.pub 101.132.242.27:~/.ssh/
  1. 在主机 A 上远程执行命令,在主机 B 上生成认证文件
[testuser@cloudgw .ssh]$ ssh 101.132.242.27 'cat .ssh/id_rsa.pub >> .ssh/authorized_keys'

  备注:两台主机登录用户名相同的情况下,ssh 命令可以缺省用户名。若指定用其他用户名登录,只需指定用户名即可,即 ssh [email protected]

  1. 登录主机 B,将 authorized_keys 改为只有当前用户有读写权限
[testuser@iZuf6crxor2b7uwzq9sutyZ ~]$ pwd
/home/testuser
[testuser@iZuf6crxor2b7uwzq9sutyZ ~]$ cd .ssh/
[testuser@iZuf6crxor2b7uwzq9sutyZ .ssh]$ ls
authorized_keys  id_rsa.pub  known_hosts
[testuser@iZuf6crxor2b7uwzq9sutyZ .ssh]$ chmod 600 authorized_keys

  如上操作完成之后,主机 A 就可以免密登录到主机 B 了。想让 A、B 机无密码互登录,那 B 机以上面同样的方式配置即可。

  扩展:若需要设置主机 A 也能同时免密登录其他多台主机,只需重复操作上述步骤 3-5 即可,或在主机 A 上先生成认证文件,修改文件权限后,再将认证文件 scp 到其他服务器。

  二、解除信任关系
  如何解除两台主机之间的信任关系呢?操作很简单,把密钥删掉是不行的,可以在主机A上如此操作:

[testuser@cloudgw ~]$ cd ~/.ssh
[testuser@cloudgw ~]$ vi known_hosts

  把 known_hosts 中关于主机 B 的那行删掉即可。

  三、原理

  • 在主机 A 上生成公钥、私钥。
  • 将公钥拷贝给主机 B。
  • 主机 A 向主机 B 发送一个连接请求。
  • 主机 B 得到主机 A 的信息后,在 authorized_keys 中查找,如果有相应的用户名和IP,则随机生成一个字符串,并用主机 A 的公钥加密,发送给主机 A。
  • 主机 A 得到主机 B 发来的消息后,使用私钥进行解密,然后将解密后的字符串发送给主机 B。主机 B 将收到的字符串和生成的字符串进行对比,如果一致,则允许免密登录。

  总之:A 要免密登录到 B,B 首先要拥有 A 的公钥,然后 B 要做一次加密验证。对于非对称加密,公钥加密的密文不能用公钥解开,只能用私钥解开。

  文章参考:

猜你喜欢

转载自blog.csdn.net/piaoranyuji/article/details/109743588