Linux 下实现SSH互信

今天我们主要介绍一下Linux之间如何实现SSH登录及数据传输互信,所谓互信就是服务器跟服务器之间数据传输或SSH登录不需要输入密码就可以访问,具体不多说了,见下:

我们今天准备使用三台Centos服务器来完成这个实验,主要体现三台服务器:A、B、C服务器之间SSH登录及数据传输不输入密码来完成;

Linux 下实现SSH互信_第1张图片

Hostname:A        IP : 192.168.5.21

Hostname:B        IP: 192.168.5.22

Hostname:C        IP: 192.168.5.23

环境要求:三台服务器使用ssh(SCP)互相访问都不需要输入密码;可以理解为SCP协议就是SSH协议,所以只要SSH之间是互信的,SCP数据传输也就互信了;

我们需要在每台服务器上安装openssh-clients

yum install -y openssh-clients

Linux 下实现SSH互信_第2张图片

我们在A服务器上执行秘钥文件的注册

ssh-keygen -t rsa 一路全部回车

第一次回车确认是key file 保存路劲

第二次回车确认的

创建目录,认证目录;然后一路回车

Linux 下实现SSH互信_第3张图片

ls .ssh/

查看生产的秘钥文件

在/root/.ssh 目录下生成了一对密钥文件

id_rsa 私钥

id_rsa.pub 公钥

Linux 下实现SSH互信_第4张图片

此时使用 cat id_rsa.pub >> authorized_keys 生成验证文件

一定是这个名字 authorized_keys;

为什么是这个名字呢:请看ssh的配置文件

vim /etc/ssh/sshd_config

Linux 下实现SSH互信_第5张图片

cat id_rsa.put >>authorized_keys

注:此时使用 cat id_rsa.pub >> authorized_keys 生成验证文件,一定是追加的形式

Linux 下实现SSH互信_第6张图片

我们查看验证文件;此时只有A主机自己的公钥

cat authorized_keys

我们可以查看当当前的ROOT@A 服务器已经在认证组中了

clip_p_w_picpath007

在B主机也生成公钥[root@B ~]# ssh-keygen -t rsa

Linux 下实现SSH互信_第7张图片

Linux 下实现SSH互信_第8张图片

将B服务器产生的公共秘钥拷贝到A服务器上

ssh-copy-id -i id_rsa.pub [email protected]

Linux 下实现SSH互信_第9张图片

然后我们可以查看A服务器的authorized_keys文件;发现里面多了root@B服务器的验证秘钥

clip_p_w_picpath011

此时我们B到A是没有问题了,拷贝或者ssh登录时不需要输入密码了

Linux 下实现SSH互信_第10张图片

但是A到B还需要密码;

此时只要将验证文件从A拷贝到B机器就可以了

scp authorized_keys [email protected]:/root/.ssh/

clip_p_w_picpath013

我们在B服务器上也查看验证文件

clip_p_w_picpath014

接下来我们从A服务器ssh到B服务器

Linux 下实现SSH互信_第11张图片

最后我们看看C服务器;同理

我们在C服务器上也需要生成公钥

Ssh-keygen –t rsa

Linux 下实现SSH互信_第12张图片

将C服务器产生的公共秘钥拷贝到A和B服务器上

ssh-copy-id -i id_rsa.pub [email protected]
ssh-copy-id -i id_rsa.pub [email protected]

Linux 下实现SSH互信_第13张图片

然后我们可以查看A服务器和B服务器的authorized_keys文件;发现里面多了root@C服务器的验证秘钥

服务器A有服务器C的公共秘钥了

clip_p_w_picpath018

服务器B也有服务器C的公共秘钥了

clip_p_w_picpath019

但是A到C、B到C还需要密码;

此时只要将验证文件从A拷贝到C机器、从B拷贝到C机器就可以了

从A服务器上执行

scp authorized_keys [email protected]:/root/.ssh/

clip_p_w_picpath020

从B服务器上执行

scp authorized_keys [email protected]:/root/.ssh/

clip_p_w_picpath021

最后我们在C服务器上查看认证秘钥的内容

Cat authorized_keys

clip_p_w_picpath022

我们在服务器C上ssh登录A和B服务器

Linux 下实现SSH互信_第14张图片

Linux 下实现SSH互信_第15张图片

我们在A服务器上ssh登录B服务器和C服务器

Linux 下实现SSH互信_第16张图片

Linux 下实现SSH互信_第17张图片

最后我们在B服务器上使用ssh登录A服务器和B服务器

Linux 下实现SSH互信_第18张图片

Linux 下实现SSH互信_第19张图片

最后我们测试一下文件拷贝吧

首先在A服务器上新建文件,然后测试拷贝,都是无需输入密码即可传输拷贝

[root@A ~]# touch A.txt
[root@A ~]# echo A >> A.txt
[root@A ~]# scp A.txt [email protected]:/root
[root@A ~]# scp A.txt [email protected]:/root

clip_p_w_picpath029

我们在B服务器上查看

clip_p_w_picpath030

接下来我们测试B-->A、B-->C服务器之间的文件传输;同样我们在B服务器上创建一个B文件;

经过测试都无需输密码即可验证传输

clip_p_w_picpath031

[root@A ~]# touch B.txt
[root@A ~]# echo B-S >> B.txt
[root@A ~]# ls B.txt
B.txt

clip_p_w_picpath032

最后我们测试C-->A、C-->B服务器之间的文件传输;同样在C服务器上创建一个C文件;

经过测试都无需输入密码即可传输

[root@C ~]# touch C.txt
[root@C ~]# echo C-S >> C.txt
[root@C ~]# ls C.txt
C.txt
[root@C ~]# scp C.txt [email protected]:/root/
C.txt
[root@C ~]# scp C.txt [email protected]:/root/
C.txt
[root@C ~]#

clip_p_w_picpath033