公私钥实现免密登录

接上一个博客,如果在rsync工具中ssh认证时不想输入密码,可以用用户的公私钥来实现。

加密算法有对称的和非对称的,
对称的:它的秘钥只有一个
非对称的:秘钥只有两个,那就是公钥和私钥。

公私钥是成对出现的,相互加解密,不能通过一方算出另一方。
数据加密是用公钥来加密,私钥来解密,所以,如果要实现免密登录:

假如客户端u1 要免密登录服务端u2。那么u1就需要将自己的公钥发送给u2进行保存,当u2连接u1时,会随机生成一个字符串,u2就会用u1发过来的公钥进行加密,当u2连接到u1时,u1用自己的私钥进行解密。

简单说就是,u1要免密登录u2,就要把u1的公钥发给u2。(如果这句话不对,还请帮忙改正)

具体操作如下:
我用了两台虚拟机,centos6的ip为172.16.8.8,rhel1的ip为172.16.8.9
将8.8作为客户端。8.9为服务端
在这里插入图片描述
1、在客户端u1先生成u1的公私钥 (在8.8上操作)

    [root@mysqlserver ~]# ssh-keygen

遇到下面提示按空格即可:

    Enter file in which to save the key (/root/.ssh/id_rsa):
    Enter passphrase (empty for no passphrase): 
    Enter same passphrase again: 

这样 生成了u1的公私钥
可以在家目录下的.ssh目录下查看: id_rsa为私钥,id_rsa.pub为公钥

   [root@mysqlserver ~]# cd .ssh
   [root@mysqlserver .ssh]# ll
   total 8
   -rw------- 1 root root 1675 Mar 19 16:08 id_rsa
   -rw-r--r-- 1 root root  398 Mar 19 16:08 id_rsa.pub

2、将客户端u1公钥放到服务器上某个用户名下(8.9的u2用户)

[root@mysqlserver ~]# ssh-copy-id [email protected]    

公私钥实现免密登录_第1张图片
3、验证

[root@mysqlserver ~]# ssh [email protected]

在这里插入图片描述
如上图,这样你就在8.8里面免密登录到8.9中的u2用户了。从而实现了ssh互信。

你可能感兴趣的:(linux)