目录
免密登录原理
ssh基于公钥的认证:免密登录
-
客户端要首先生成一对密钥(公钥和私钥)
-
把客户端的公钥需要你手动放到服务器上面(要手动的放到服务器,首先得知道这个服务器)
这里就已经确保服务器是可信的。放到服务器的用户家目录的~/.ssh/authorized_keys
-
客户端请求服务器
-
服务器收到客户端的请求之后,先生成随机数random_server, 使用客户端放在authorized_keys这个文件中的公钥对随机数进行加密
pubkey(random_server)发送给客户端
-
客户端有公钥和私钥,客户端收到这个加密的数据pubkey(random_server), 客户端使用私钥进行解密拿到random_server
使用MD5(hash) 对random_server和sessionkey(会话密钥,在密钥交换步骤产生的)加密形成一个摘要digest1
发送给服务器
-
服务器接收到digest1, 然后服务器本身自己使用之前协商过的MD5算法,自己也知道random_server, 也知道会话密钥sessionkey
也是使用MD5算法对random_server sessionkey进行加密形成摘要digest2,最后去比较digest1 和 digest2是否相等
如果相等,登录成功,如果不相等,登录失败。
免密登录操作
1.客户端产生公钥和私钥
当前系统上本身支持的算法:
HostKey /etc/ssh/ssh_host_rsa_key
HostKey /etc/ssh/ssh_host_ecdsa_key
HostKey /etc/ssh/ssh_host_ed25519_key
使用rsa这种算法:
产生公钥和私钥的命令:
[root@rhce ~]# 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:IKIZhQjwslma218g/E7u3OQPjogvvZtmsfoZcRtDkXQ root@rhce
The key's randomart image is:
+---[RSA 2048]----+
|*...o.E |
|oo .o |
|o + o . |
| % o . . |
|B + = S |
| o.= = |
|..oo+ + |
|..=@ B . |
|oBO+B +.. |
+----[SHA256]-----+
去到/root/.ssh/这个路径查看是否生成
id_rsa:客户端的私钥
id_rsa.pub:客户端的公钥
使用公钥进行加密,使用私钥进行解密
cd /root/.ssh/
[root@rhce .ssh]# pwd
/root/.ssh
[root@rhce .ssh]# ls -l
total 12
-rw-------. 1 root root 1811 Jan 10 22:38 id_rsa
-rw-r--r--. 1 root root 391 Jan 10 22:38 id_rsa.pub
-rw-r--r--. 1 root root 177 Jan 10 22:15 known_hosts
2.将我们的公钥存放在服务器端的authorized_keys这个文件中
公钥是id_rsa.pub,把这个公钥的内容放入服务器端authorized_keys文件中。(两种操作)1)直接使用命令:ssh-copy-id 主机名
[root@rhce .ssh]# ssh-copy-id root@192.168.247.128
/usr/bin/ssh-copy-id: INFO: Source of key(s) to be installed: "/root/.ssh/id_rsa.pub"
/usr/bin/ssh-copy-id: INFO: attempting to log in with the new key(s), to filter out any that are already installed
/usr/bin/ssh-copy-id: INFO: 1 key(s) remain to be installed -- if you are prompted now it is to install the new keys
root@192.168.247.128's password:
Number of key(s) added: 1
Now try logging into the machine, with: "ssh 'root@192.168.247.128'"
and check to make sure that only the key(s) you wanted were added.
2)直接将id_rsa.pub拷贝到服务器端,然后把id_rsa.pub的内容写入authorized_keys中
将id_rsa.pub 拷贝到 服务器端
scp id_rsa.pub 192.168.247.128:/root
将id_rsa.pub的内容写入~/.ssh/authorized_keys
cd /root
cat id_rsa.pub >> ~/.ssh/authorized_keys
验证免密登录:
ssh root@192.168.247.128
不需要密码就可以登陆
注意
ssh连接的时候,是需要指定用户的 ssh root@192.168.233.118, 可以是root用户也可以其他的普通用户。
连接的产生的公钥和私钥,authorized_keys,known_hosts这些文件都存储在我们用户家目录下的~/.ssh/
使用不同的用户登录,对应会在用户家目录产生.ssh这个目录
如果要配置免密登录(基于公钥的认证), 需要是两台Linux机器, 一台作为客户端,一台作为服务端。