Linux下面的ssh(Secure SHell Protocal)服务是针对一些远程客户所提供的一个bash接口,让客户可以在远程的终端面前登录Linux主机以取得可操作主机的接口(shell)。远程登录后的操作就感觉想在系统主机前面一样。
Linux启动后,如果主机是默认开启sshd的话(可以用chkconfig检查),那么系统会自己在第一次启动sshd服务的时候,去找[/etc/ssh/ssh_host*]这些文件。如果不存在,sshd会主动去计算出这些需要的公钥文件,当然还有私钥。
然后,客户端连接服务器的时候。服务器在收到客户端的连接请求后,服务器会将先前算出的公钥文件传送一份给客户端。
接下来,客户端在收到 服务器传送过来的公钥文件后。如果这是客户端第一次连接服务器,则会将服务器的公钥文件存到客户端的用户主目录内的[~/.ssh/known_hosts];若是曾经记录过服务器的公钥文件,那么客户端会比较先前存储的公钥文件和新传过来的文件之间的差异,再决定存储与否(这个跟服务器的公钥文件是否更新有关)。然后客户端开始计算自己的密钥。
最后,客户端将自己的公钥传送给服务器。这样才建立起非对称密钥系统。
可以清空客户端的用户主目录内的[~/.ssh/known_hosts],然后再ssh到服务器,就会重新出现要求将fingerprint写入到服务器的公钥文件当中的请求,这其实就是在客户端重建服务器的公钥