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

假设如下场景:实现主机A免密码登录到主机B,主要步骤如下: 
    1)在主机A中利用"ssh-keygen -t rsa" 产生相应的私钥和公钥(id_rsa和id_rsa.pub). 
    2)在主机A中添加自己的私钥:ssh-add  id_rsa 
    注:很多介绍中都少了第二步,所以经常出现测试时不通过的情形。 
           ssh-add id_rsa                 
           # 如果提示 could not open a connection to your authentication agent 
           终端做如下操作: 
           ssh-agent bash 
           ssh-add id_rsa # 输入密码 
    3)将主机A中的公钥id_rsa.pub拷贝到主机B的.ssh目录下,并cat id_rsa.pub >>authorized_keys 中。 
    4)将主机B中的authorized_keys改为只有当前用户有读写权限:chmod 600 authorized_keys 
    
    这样主机A就可以免登录到主机B了。

  想让A,B机无密码互登录,那B机以上面同样的方式配置即可。

 
但是如何解除两台机器之间的信任关系呢?
其实很简单,把密钥删掉是不行的,可以在主机A上如此操作
(1)cd ~/.ssh
 (2) vi  known_hosts
(3)把known_hosts中关于主机B的那行删掉就行了
 

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

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

原文地址:https://www.cnblogs.com/snailon/p/13396860.html