SSH是什么?
SSH是建立在应用层基础上的安全协议,是目前较可靠,专为远程登录会话和其他网络服务提供安全性的协议。利用 SSH 协议可以有效防止远程管理过程中的信息泄露问题。通过SSH可以对所有传输的数据进行加密,也能够防止DNS欺骗和IP欺骗。
当数据到达目的地时,SSH自动对加密数据进行解密。整个过程都是透明的,使用OpenSSH工具将会增进系统的安全性
除此之外,SSH传输的数据是经过压缩的,所以可以加快传输的速度。SSH还有很多功能,它既可以代替Telnet,又可以为FTP、POP、甚至为PPP提供一个安全的通道。
SSH连接的原理
假设A主机想要连接到B主机:
- A主机向B主机发送连接请求
- B主机向A主机发送公钥
- A主机用公钥将密码信息加密并发送给B
- B主机用私钥解密并验证密码信息,信息合法就建立连接
免密登录的原理
由于上面的方式A主机必须得输入密码信息发送进行验证,也就是说我们每次进行连接都得需要输入密码,超级麻烦~
因此,我们就可以通过免密登录来实现无密码进行链接。
至于实现的原理是什么?假设A主机想要免密连接到B主机:
-
在A主机上生成公钥私钥
-
将A中的公钥拷贝给到B主机中的authorized_keys(也就相当于把A加入到B的白名单中)
-
A向B发送连接请求
-
B得到请求后,在authorized_key中查找是否有对应用户名和IP。如果有则随机生成一个字符串并用A的公钥进行加密并发送给A
-
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发起连接就可以无需输入密码了~
如果有写的不对或者不全面的地方 可通过主页的联系方式进行指正,谢谢