author:JevonWei
版权声明:原创作品
跨主机ssh连接
主机A想连接主机C,但是主机C防火墙等原因禁止主机A连接,而主机A可以连接主机B,主机B也可连接主机C,即主机A就可通过主机B做跳板从而达到连接主机c的目的
主机A:192.168.198.100
主机B:192.168.198.130
主机C:192.168.198.200
ssh -t 192.168.198.130 ssh 192.168.198.200 主机A通过连接主机B从而获得一个伪终端进而ssh连接主机C
SSH端口转发(telnet协议)
主机A想通过telnet不安全的协议连接到C主机,但是主机C的防火墙阻挡连接,故可通过主机B的ssh端口转发将不安全协议封装到ssh安全协议中,然后主机B再将ssh封装的主机A的不安全协议进行解密然后在传输给主机C
主机A 192.168.198.134
主机B 192.168.198.128
主机C 192.168.198.136
在主机A上开放隧道端口
-
主机C因为防火墙等因素阻止主机A的连接,但C允许主机B连接
iptables -A INPUT -s 192.168.198.134 -j REJECT
-
主机A上建立SSH的端口转发到主机B的数据隧道
主机A
ssh -L 5896:192.168.198.136:23 -Nf 192.168.198.128 -L 指定在本机操作,5896端口为主机A打开的端口,-N不开启远程shell窗口,-f后台执行,指定192.168.198.136:23指定需要连接的主机C的IP及端口号,192.168.198.131指定SSH实现端口转发的主机B,然后键入主机B的口令
主机A
ss -nt \ 查看主机B上已显示主机A的连接
主机A
ss -ntl \ 查看主机A的5896端口是否打开
主机A
telnet 127.0.0.1 5896 主机A连接开放的5896端口,即可通过主机B连通主机C
主机C
ss -nl \ 检测主机C的网络连接,即主机B连接建立的连接
在主机B上开放隧道端口,A主机访问主机C
主机B:
ssh -R 5896:192.168.198.136:23 -Nf 192.168.198.134
主机A:
ss -ntl | grep 5896 \ 检测5895端口是否打开
telnet 127.0.0.1 5896
主机C
ss -nt \ 检测到的其实是主机B 192.168.198.128的主机的连接
SSH端口动态转发(实现web访问)
主机A通过主机B的1080端口访问主机C
主机A 192.168.198.134
主机B 192.168.198.128
主机C 192.168.198.136
-
主机C因为防火墙等因素阻止主机A的连接,但C允许主机B连接
iptables -A INPUT -s 192.168.198.134 -j REJECT
-
主机A开启动态端口转发
ssh -D 5896 192.168.198.128 主机A开启一个5896的端口连接主机B 192.168.198.128
ss -ntl | grep 5896 检测5896端口是否打开
- 使用主机A的浏览器配置端口代理
SOCKS Host 输入的为本机的IP和开放的动态端口号5896
主机A使用crul字符浏览器访问主机C的web服务
curl 192.168.198.136
-
主机B
ss -nt 查看网络连接,主机A192.168.198.134已成为ssh的客户端
-
主机C查看/var/log/httpd/access_log日志文件可知主机A是通过主机B连接到web服务的
cat /var/log/httpd/access_log