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文件中, 要登录远程服务器来执行命令