工作中有时我们需要用一台服务器去控制另一台服务器执行命令,或者将一些文件拷贝到另一台服务器上,但是这种操作指令默认是需要输入密码的,如果频繁操作的话就会很麻烦,或者如果用代码控制服务器执行命令时需要密码确认也比较麻烦,所以这时候就需要免密登录,给服务器之间建立信任关系。

其实这个原理很简单,就是在主机上生成秘钥,将公钥拷贝给各个被信任的服务器,登录时通过主机自留的私钥来解密,从而实现免密登录

那么怎么做呢?只需要简单的五个步骤,方法如下:

1.cd /root/.ssh(前三步在主机上执行)

[root@node1 /]# cd /root/.ssh/
[root@node1 .ssh]# 

这里输入cd ~/.ssh也是一样的

[root@node1 /]# cd ~/.ssh/
[root@node1 .ssh]# 

2.ssh-keygen -t rsa 然后按三次回车直到生成完毕

[root@node1 .ssh]# ssh-keygen -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa): 
Enter passphrase (empty for no passphrase): 
Enter same passphrase again: 
Your identification has been saved in /root/.ssh/id_rsa.
Your public key has been saved in /root/.ssh/id_rsa.pub.
The key fingerprint is:
SHA256:CdKRh0LZTLzxp8Z6TxDuUccwtdUviTkz5jBg6SQwW0g root@node1
The key's randomart image is:
+---[RSA 2048]----+
|   oEO+o .o.. .. |
|    +=O.*  + o  .|
|    o.oX... +o ..|
|     ..oo++.B o .|
|       .So = + . |
|       .+o  .    |
|       o. .      |
|      . ..       |
|       . ..      |
+----[SHA256]-----+

3.cat /root/.ssh/id_rsa.pub 将内容复制

cat id_rsa.pub 
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDT4M7MNKaWW9n/E2ucr7nbMx41vPMYS+ubX5RbCDTKBLrk0PzygUly6rMEYCT3QA9TA1FwPXQu0yM+qI/QRRTmPtkoDxP7X+tUlbTxAIvh2EUqgKRBOPBGjvnRVX+J2vTpxJcx4hXQDGSNFRCC6YuHJYyoTPtQ7XgQ7zg9bggAHnkVD9ZVagmBfNbCvauMsknAcYtbBiu1pXy14YMxo4C0vzDTgfudDgXfcxlFXFqnUDPU6CUdcjzEb7VluB4anfAjPxTxcaQR/564WMQVjKBay38sWnwWl2V8iYSzlPugB+/eLjhLwJ/j0w3LyMgE0cueayAvHCAmMyByjCYOVcu3 root@node1

4.登陆到被信任主机上 vim /root/.ssh/authorized_keys 将刚才的内容复制过来

这里需要注意的是,如果你的服务器没有做过ssh登录的话这里是没有ssh文件夹的,需要新建一个,如果有就不需要了

另外,如果你无法直接登录被信任的主机,也可以用scp指令,这里就不再赘述了

[root@node3 ~]# mkdir /root/.ssh
[root@node3 ~]# cd /root/.ssh/
[root@node3 .ssh]# vim authorized_keys

把刚刚复制的内容粘贴过来就好(按i进入编辑模式,然后粘贴)

ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDT4M7MNKaWW9n/E2ucr7nbMx41vPMYS+ubX5RbCDTKBLrk0PzygUly6rMEYCT3QA9TA1FwPXQu0yM+qI/QRRTmPtkoDxP7X+tUlbTxAIvh2EUqgKRBOPBGjvnRVX+J2vTpxJcx4hXQDGSNFRCC6YuHJYyoTPtQ7XgQ7zg9bggAHnkVD9ZVagmBfNbCvauMsknAcYtbBiu1pXy14YMxo4C0vzDTgfudDgXfcxlFXFqnUDPU6CUdcjzEb7VluB4anfAjPxTxcaQR/564WMQVjKBay38sWnwWl2V8iYSzlPugB+/eLjhLwJ/j0w3LyMgE0cueayAvHCAmMyByjCYOVcu3 root@node1
~                                                                                                                                                
~                                                                                                                                                
~                                                                                                                                                
~                                                                                                                                                
~                                                                                                                                                
~                                                                                                                                                
~                                                                                                                                                
~                                                                                                                                                
~                                                                                                                                                
~                                                                                                                                                
~                                                                                                                                                
~                                                                                                                                                
~                                                                                                                                                
~                                                                                                                                                
~                                                                                                                                                
~                                                                                                                                                
~                                                                                                                                                
~                                                                                                                                                
~                                                                                                                                                
~                                                                                                                                                
~                                                                                                                                                
~                                                                                                                                                
~                                                                                                                                                
~                                                                                                                                                
~                                                                                                                                                
~                                                                                                                                                
~                                                                                                                                                
~    

5.测试ssh就行了

这时候已经可以免密登录了

[root@node1 .ssh]# ssh 192.168.2.211
Last login: Sun Jun 28 15:52:18 2020 from 192.168.2.101
[root@node3 ~]# exit
登出
Connection to 192.168.2.211 closed.
Logo

更多推荐