1、定义
双机互信——是指互信的双方主机在进行SSH登陆对方时无须输入密码。(SSH(Secure Shell缩写),由 IETF 的网络工作小组所制定的建立在应用层和传输层基础上的安全协议。可以建立起多台主机之间的安全的加密传输,以进行远程的访问、操控、传输数据。)
2、原理
所谓双机互信是使用一种被称为"公私钥"认证的方式来进行SSH登录。所谓"公私钥"认证方式是指:首先在客户端上创建一对公私钥(公钥文件:~/.ssh/id_rsa.pub;私钥文件:~/.ssh/id_rsa),然后把公钥放到服务器上的一个总认证文件中(~/.ssh/authorized_keys),自己保留好私钥。当ssh登录时,ssh程序会发送私钥去和服务器上的公钥做匹配。如果匹配成功就可以无需输入密码成功登录。
3、实例应用
3.1 实验环境
A机:192.168.1.1 主机名:linux-1
B机:192.168.1.2 主机名:linux-2
A机上用户只需要通过 ssh 192.168.1.2 ----查看是否提示需要输入密码
B机上用户只需要通过 ssh 192.168.1.1
若无需密码可以直接相互访问,则说明相互之间已经建立互信(ssh)关系;若需要输入密码,则说明还未建立,需要进行以下互信的配置。
3.2双机建立信任配置
(以A、B互信为例)
步骤一:在A机生成安全信任关系证书(即公私钥文件)
1)、以etl0用户登录主机A,执行以下命令:
>mkdir .ssh -----在家目录下创建“. ssh”目录。
2)、在A机etl0用户下执行ssh-keygen命令:
> ssh-keygen -t dsa -P '' -f ~/.ssh/id_dsa
该步骤是在A主机的etl0用户家目录下的.ssh子目录中生成私钥证书id_rsa和公钥证书id_rsa.pub
步骤二、查看步骤一中生成密钥的文件
>cd .ssh
>ll
步骤三: A对B建立信任关系
1)、将A上的公钥证书id_rsa.pub复制到机器B的etl0家目录下
以etl0用户登录A,执行如下命令:
>scp~/.ssh/id_rsa.pub etl0@192.168.1.2:/home/etl0
2)、将B上的公钥文件放入/.ssh/目录下的总认证文件中
以etl0用户登录B主机,执行如下命令:
>mkdir.ssh (先在B上建立.ssh文件夹)
>cat~/id_rsa.pub >>~/.ssh/authorized_keys
3)、修改总认证文件(~/.ssh/authorized_keys)的读写权限:
执行如下命令:
>chmod u+x ~/.ssh/authorized_keys
此时A对B的信任关系已经建立。
步骤四、 B对A建立信任关系(步骤和上述三步同理)
1)、etl0用户登录B主机,输入如下命令生成B的公私钥文件,并查看生成文件是否成功:
命令如下:
>ssh-keygen-t dsa -P '' -f ~/.ssh/id_dsa
>cd.ssh
>ll
2)、将B的公钥证书id_rsa.pub复制到机器A的etl0家目录下
在B的etl0用户下,执行如下命令:
>scp~/.ssh/id_rsa.pub etl0@192.168.1.1:/home/etl0
其中:192.168.1.1 是A主机的A的IP地址。
3)、将A上的公钥文件放入自己的总认证文件中
etl0用户登录A主机,执行如下命令:
>cat~/id_rsa.pub >>~/.ssh/authorized_keys
4)、给A上的总认证文件(~/.ssh/authorized_keys)赋读写权限,执行如下命令:
>chmodu+x ~/.ssh/authorized_keys
至此双机互信已建立完成。
3.3 双机互信验证
场景1)、远程登陆命令
命令格式:ssh远程主机IP地址
> ssh 192.168.1.2 (在A主机上远程登录B)
上述命令执行后,终端输出的是对端主机的主机名,而不是当前登录的主机的主机名。可用 hostname命令查看。
A对B信任关系已经建立!
退出执行logout命令:
下面同理验证B对A的信任:
> ssh 192.168.1.2 (在B主机上远程登录A)
场景2)、验证无密码scp传输数据(将A上的/home/etl0/mlhtest文件夹拷贝到B上的/home/etl0/temptest/目录下
在A机上执行:
# scp -r mlhtest 192.168.1.2:/home/etl0/temptest/
在B机上查看:
同理: B可以不输入密码,scp数据到A中,不再赘述。
3.4 SSH的优点
SSH连接是CS模型(客户端-服务器),客户端发出连接申请,服务器对客户端进行验证,再考虑是否接受连接申请。
如果直接从客户端将用户密码传输到服务器,那么密码信息很容易被中间人截获,从而实现重放攻击。ssh的实现方式是:
1.客户端向ssh服务器发出请求,服务器将自己的公钥返回给客户端;
2.客户端用服务器的公钥加密自己的登录密码,再将信息发送给服务器;
3.服务器接收到客户端传送的密码,用自己的私钥解码,如果结果正确,则同意登录,建立起连接。
3.5 SSH的缺点
这种方式还是有漏洞的,中间人可以假扮成服务器,骗取客户端的密码。