参考资料
环境
- ubuntu
原理
其实 SSH
服务同样可以按照 C-S
架构来进行划分,这里把我们当前的主机抽象为客户端A
,把远程的服务器抽象为服务器B
。
我们首先在本地A主机
中生成一对密钥,包括一个私钥和一个公钥。私钥可以理解为用来识别自己身份的表示,公钥可以理解为公开的通行证。
举个通俗的例子,可以把私钥理解为身份证,公钥理解为读卡器,读卡器识别身份证成功,则放行通过。
回到话题,A
生成一对密钥,然后将公钥复制到B的授权列表,当 ssh
发起请求的时候,服务器会给客户端发送一个随机字符串,客户端收到以后,用私钥进行加密,再传给服务器。服务器再用公钥解密,确认是自己之前发送的随机字符串,说明身份认证通过。
RSA
加密是公钥加密私钥解密RSA
身份认证是私钥加密公钥解密
操作
在本地生成了公钥和私钥后,也就是 id_rsa.pub
,里面的内容假设为 ****
。
登录到服务器
cd ~/.ssh
在 authorized_keys
「没有这个文件,就自己新建一个」 文件中,把上面的公钥内容复制进去,就可以了。
当然,有时候,你复制了相关公钥内容后,发现还是不能免密登陆,可能是你本地有大量的 ssh
公钥信息,造成了紊乱,所以,在本地你也可以弄一个 authorized_keys
文件「这个情况是我假设的,没具体操作过」
你可以参考