SSH隧道
前言
SSH隧道是一种通过SSH协议在两台计算机之间建立加密连接的方法。除了用于远程登录外,SSH隧道还可以用于实现Web代理,以便在安全的网络环境中浏览网页。下面将介绍如何使用SSH隧道实现一种Web代理的方法。
一、场景
设备a:172.31.31.254 内网终端,开了sshd服务,
设备b:172.31.77.201 内网web服务器
设备c:172.20.20.217 外网终端
因为网络环境有限,没有公网环境,都是在内网不同网段做模拟测试,不要太过纠结内网,外网
-
外网场景:在外网配置ssh隧道
能通过ssh访问网段A内的设备a,却不能访问网段A内设备b上的web服务,但设备a能访问设备b的web服务, -
内网场景:在内网配置ssh隧道
基于安全考虑要把网段A内的设备b隐藏起来,通过设备a开放一个自定义端口去访问设备b的web服务
二、前提条件
- 内外网场景都需要知道设备a的ssh登录的账号与密码,不过内网场景的话一般是内部人员去配置,所以一般知道账号,密码
- 设备a上要ssh服务要设置GatewayPorts yes,允许远程主机访问通过SSH隧道转发的端口。默认情况下,SSH只会将端口转发到本地主机上,而不允许其他主机通过SSH隧道访问这些转发的端口
三、建立SSH隧道
-
在设备a上配置允许远程主机访问通过SSH隧道转发
配置文件:/etc/ssh/sshd_config 配置:GatewayPorts yes
重启sshd服务:service sshd restart -
创建ssh隧道
a.外网场景,在设备c上配置ssh -f -N -g -R 6608:172.31.77.201:443 -p 2000 root@172.31.31.254 -f:代表后台运行程序 -N:表示不执行远程命令 -g:允许远程主机的连接 -R:表示创建一个远程端口转发,这会在远程主机(172.31.31.254)上监听 6608 端口,并将所有到这个端口的连接转发到 172.31.77.201 的 443 端口上 -p:指定172.31.31.254上ssh服务的端口,如果是22就不用-p参数
b.内网场景,在设备a上配置
ssh -f -N -g -L 4444:172.31.77.201:443 -p 2000 root@172.31.31.254 -L:表示将本机端口映射出去
四 、测试验证
注意:
需要注意的是,SSH隧道的速度可能会受到网络带宽和服务器性能的影响,因此在实际使用中需要根据具体情况进行调整和优化。另外,如果你需要访问HTTPS网站,SSH隧道会自动处理加密和解密过程,你无需额外配置。