什么叫SSH?原理详解,看这一篇就够了!
时间:2024-04-18 16:40:21 来源:网络cs 作者:言安琪 栏目:卖家故事 阅读:
你们好,我的网工朋友。
SSH是一种加密的网络安全协议,用于安全地远程登录和执行命令。
使用如下命令进行连接。
ssh -p 22 root@192.168.13.135
若在本机上是首次登录该远程主机,则会出现如下界面。
03 SSH端口转发
SSH 不仅仅能够自动加密和解密 SSH 客户端与服务端之间的网络数据;
同时,SSH 还能够提供了一个非常有用的功能,那就是端口转发,即将TCP 端口的网络数据,转发到指定的主机某个端口上,在转发的同时会对数据进行相应的加密及解密。
如果工作环境中的防火墙限制了一些网络端口的使用,但是允许 SSH 的连接,那么也是能够通过使用SSH转发后的端口进行通信。
转发,主要分为本地转发与远程转发两种类型。
01 转发的参数
-C:压缩数据-f :后台认证用户/密码,通常和-N连用,不用登录到远程主机。-N :不执行脚本或命令,通常与-f连用。-g :在-L/-R/-D参数中,允许远程主机连接到建立的转发的端口,如果不加这个参数,只允许本地主机建立连接。-L : 本地端口:目标IP:目标端口-D : 动态端口转发-R : 远程端口转发-T :不分配 TTY 只做代理用-q :安静模式,不输出 错误/警告 信息
02 本地转发
有本地网络服务器的某个端口,转发到远程服务器某个端口。
说白了就是,将发送到本地端口的请求,转发到目标端口。格式如下:
ssh -L 本地网卡地址:本地端口:目标地址:目标端口 用户@目标地址。
现在我们利用本地转发来解决一个问题,比如我们有两台机器,如下:
centos A(192.168.13.139)
centos B(192.168.13.142)
01 利用远程转发,实现代理功能
目前B机器,只能在自己127.0.0.1的80端口监听并转发,如何让B机器作为代理,转发其他机器的请求到A机器上面呢?
比如,现在有一台机器C(192.168.13.143),C不能访问A,但是能够访问B。如何让C利用B来访问A呢?
此时,需要将B的监听,由127.0.0.1:8081,改为0:0.0.0:8081,修改sshd的配置/etc/ssh/sshd_config。
vim /etc/ssh/sshd_config如果有GatewayPorts no改为GatewayPorts yes没有,添加即可然后重启sshdsudo service sshd restart
然后重新,设置动态转发,如下:
ssh -f -g -N -R 8081:127.0.0.1:80 dequan@192.168.13.149
可以看到,此时B机器,已经监听了0:0.0.0:8081
在C机器上面,我们通过curl模拟请求,利用B机器做代理,如下:
curl -x 192.168.13.149:8081 127.0.0.1
当然,如果还有其他机器,也可以使用类似的方式,来请求A机器。
07 SSH的动态转发
对于SSH的本地转发和远程转发,都需要将本地端口和远程端口一一绑定,格式如下:
ssh -D [本地地址:]本地端口号 远程用户@远程地址
比如,把发到B机器上面的请求,都转发到A机器上面,让A机器去执行请求。
08 SSH存在的问题
如果有人截获了登录请求,然后冒充远程主机,将伪造的公钥发给用户,那么用户很难辨别真伪。
因为不像https协议,SSH协议的公钥是没有证书中心(CA)公证的,也就是说,都是自己签发的。
可以设想,如果攻击者插在用户与远程主机之间(比如在公共的wifi区域),用伪造的公钥,获取用户的登录密码。再用这个密码登录远程主机,那么SSH的安全机制就荡然无存了。
这种风险就是著名的"中间人攻击"(Man-in-the-middle attack)。
整理:老杨丨10年资深网络工程师,更多网工提升干货,请关注公众号:网络工程师俱乐部
阅读本书更多章节>>>>本文链接:https://www.kjpai.cn/gushi/2024-04-18/160105.html,文章来源:网络cs,作者:言安琪,版权归作者所有,如需转载请注明来源和作者,否则将追究法律责任!
上一篇:深入解析Linux route命令:临时路由和永久路由的完全指南
下一篇:返回列表