centos实现免密登录

[root@vm7-3-6 ~]# ssh-keygen
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa):
Created directory '/root/.ssh'.
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:f7pAiyQGKQ6ifqsInWx/jWYu9TL/MvVFFv8s2bP5zws root@vm7-3-6
The key's randomart image is:
+---[RSA 2048]----+
|                 |
|   .          .  |
|+ o            o |
|=. .          o .|
|..  o . S    o +.|
|.o o o.o o.   +.+|
|..=. ..+o....E .+|
|o...o B =. o. .+ |
|.....*.+.++.   .B|
+----[SHA256]-----+

执行完成后会生在当前用户目录下生成 .ssh文件夹,进入文件夹发现有两个文件authorized_keys  id_rsa  id_rsa.pub  known_hosts
,authorized_keys是存放其他机器公钥的地方

id_rsa                             私钥文件

id_rsa.pub                      公钥文件

known_hosts                 已知的主机公钥清单

authorized_keys            存放远程远程免密登录的机器的公钥,主要通过这个文件记录需要登录的机器的公钥

原理:
- 客户端向服务器端发出连接请求
- 服务器端向客户端发出自己的公钥
- 客户端使用服务器端的公钥加密通讯密钥然后发给服务器端
- 如果通讯过程被截获,由于窃听者即使获知公钥和经过公钥加密的内容,但不拥有私 钥依然无法解密(RSA算法)
- 服务器端接收到密文后,用私钥解密,获知通讯密钥

scp -p ~/.ssh/id_rsa.pub root@10.112.1.201:/root/.ssh/authorized_keys   //如果有多台,这个命令会覆盖之前的文件

 

如果要登录

scp ~/.ssh/id_rsa.pub root@<remote_ip>:pub_key //将文件拷贝到远程服务器

cat ~/pub_key >>~/.ssh/authorized_keys //将内容追加到authorized_keys文件中, 要登录远程服务器来执行命令