实现ssh免密登陆

SSH是什么?

​ SSH是建立在应用层基础上的安全协议,是目前较可靠,专为远程登录会话和其他网络服务提供安全性的协议。利用 SSH 协议可以有效防止远程管理过程中的信息泄露问题。通过SSH可以对所有传输的数据进行加密,也能够防止DNS欺骗和IP欺骗。

​ 当数据到达目的地时,SSH自动对加密数据进行解密。整个过程都是透明的,使用OpenSSH工具将会增进系统的安全性

​ 除此之外,SSH传输的数据是经过压缩的,所以可以加快传输的速度。SSH还有很多功能,它既可以代替Telnet,又可以为FTP、POP、甚至为PPP提供一个安全的通道。

SSH连接的原理

​ 假设A主机想要连接到B主机:

  1. A主机向B主机发送连接请求
  2. B主机向A主机发送公钥
  3. A主机用公钥将密码信息加密并发送给B
  4. B主机用私钥解密并验证密码信息,信息合法就建立连接

免密登录的原理

​ 由于上面的方式A主机必须得输入密码信息发送进行验证,也就是说我们每次进行连接都得需要输入密码,超级麻烦~

​ 因此,我们就可以通过免密登录来实现无密码进行链接。

​ 至于实现的原理是什么?假设A主机想要免密连接到B主机:

  1. 在A主机上生成公钥私钥

  2. 将A中的公钥拷贝给到B主机中的authorized_keys(也就相当于把A加入到B的白名单中)

  3. A向B发送连接请求

  4. B得到请求后,在authorized_key中查找是否有对应用户名和IP。如果有则随机生成一个字符串并用A的公钥进行加密并发送给A

  5. A得到B发来的消息后用私钥进行解密,然后将解密后的字符串发送回B。B进行对比,若一致则允许免密登录

如何实现免密登录

步骤一:

​ A主机若已经生成了公钥私钥,则跳过此步(因此一个主机在同一时间下只能拥有一对公钥私钥,再次随机生成会覆盖掉之前的公钥私钥,但不建议这么做,因为可能在其它主机上存储了A主机之前的公钥,如果A主机再次生成公钥私钥的话会导致之前做过免密登录的主机失效)

​ 若无公钥私钥,则A主机通过$ ssh-keygen -t rsa -P 就可以在家目录下的.ssh文件夹中生成id_rsa(私钥)和id_rsa.pub(公钥)两个文件

步骤二:

​ 把A中的id_rsa.pub(也就是公钥)中的内容追加到B主机中家目录下的.ssh/authorized_keys中(若B主机没有该路径和文件则先创建),这样就实现了加入白名单

​ 这样,已有A向B发起连接就可以无需输入密码了~

转载请注明出处!!!

如果有写的不对或者不全面的地方 可通过主页的联系方式进行指正,谢谢

猜你喜欢

转载自blog.csdn.net/Ivan_zcy/article/details/86573558