ssh支持两种认证方式:密码认证和公钥认证。若没有配置公钥认证,则每次ssh连接时都需要输入密码,不仅麻烦而且还不安全,因此推荐配置公钥认证,只需在配置时输入一次密码,之后ssh连接就无需输入密码了。
公钥认证配置只需在ssh客户端机子上配就可以:
1.在客户端机子上生成公钥id_rsa.pub和私钥id_rsa(默认存在当前用户主目录的.ssh/下),输入ssh-keygen,有三次询问,直接回车即可。
2. 把公钥复制到ssh server上,这个步骤其实就是刚生成的id_rsa.pub的内容追加到ssh server 的 ../.ssh/authorized_keys 文件下
这个步骤需要输入一次ssh server的密码,执行完成后再以ssh方式登陆时就不需要再输入密码了:
配置完毕.
公钥认证说明:
使用ssh-keygen程序生成公钥 id_dsa.pub 和私钥 id_dsa,一般是在客户端上生成,然后把 id_dsa.pub 通过某种方式发送给服务端。
服务端放在将要远程登录过来的那个账号的目录的.ssh目录下面。
客户端使用密钥和算法协商阶段生成的会话密钥加密账号、认证方法、id_dsa.pub,将结果发送给服务端。
服务端使用会话密钥解密报文,得到账号、id_dsa.pub。 服务端在这个账号的目录的.ssh目录下找对应的公钥,如果没有找到,发送失败消息给客户端,如果找到,比较客户发送过来的这个公钥和找到的公钥,如 果内容相同,服务端生成一个随机的字符串,简称“质询”,然后使用找到的公钥加密这个质询,然后使用会话密钥再次加密。
服务端把这个双重加密的数据发送给客户端。
客户端使用会话密钥解密报文,然后使用id_dsa再次解密数据,得到质询。
客户端使用会话密钥加密质询,发送给服务端。
服务端使用会话密钥解密报文,得到质询,判断是不是自己生成的那个质询,如果不相同,发送失败消息给客户端,如果相同,认证通过