当用户尝试通过SSH连接到远程服务器时,客户端会生成一对密钥:公钥和私钥。公钥被发送到远程服务器,并存储在服务器的~/.ssh/authorized_keys
文件中。而私钥则由客户端保管,不会传输给服务器。
在连接过程中,客户端使用私钥来加密一个随机生成的会话密钥,并将这个加密后的会话密钥发送给服务器。服务器收到后,使用存储的公钥来解密会话密钥。如果解密成功,说明客户端持有与公钥匹配的私钥,因此可以确认客户端的身份,完成登录过程。
Windows客户端通过密钥登录Linux服务端root用户:
打开配置文件:
密钥认证文件的位置(没有注释的那一行):
这个目录下是空的:
可以手动创建:
windows客户端的公钥保存位置:
用xshell生成公钥:
一直点下一步,密码可以不输:
生成了:
windows客户端也生成了密钥:
记事本打开它复制到配置文件里去:(把Windows客户端的公钥保存到linux服务端去)
在本地shell用root用户免密登录测试:
选择刚刚生成的密钥:
确定后直接登录进去了:
Linux客户端通过密钥登录Linux服务端root用户:
以上面那台192.168.234.111为客户端:
让客户端生成 SSH 密钥对:(输入后一直按回车下去)
可以看到密钥对生成了:
可以手动将公钥复制到服务端192.168.234.130去:
也可以用指令复制过去:
输入yes、密码后复制成功:
服务端192.168.234.130生成了密钥:
打开查看和上面客户端的密钥一样:
用客户端111ssh登录服务端130:
可以看到登录成功了ip为服务端的ip:(没有输入密码直接登录进去了)