ssh端口转发

参考资料:

修改VPS ssh配置

vi /etc/ssh/sshd_config


与portForwarding相关的都改为yes.

本地端口转发LPF

当本地不能直接连接外部服务的时候,使用LPF

案例一:两个机器

1
2
3
4
5
6
7
8
9
10
-f 后台启用
-g 启用网关功能
-N 不打开远程shell,处于等待状态

ssh -fgN -L 9000:127.0.0.1:80 root@VPS
这条命令中,使用的IP和端口含义如下

本地:127.0.0.1:9000
远程:VPS:80
一旦连接成功,访问以上两个地址效果相等。

访问本地地址 = 访问(原先访问不了的)外网地址

案例二:三个机器

1
2
3
4
5
6
7
ssh -fgN -L 9000:211.103.214.132:80 root@VPS

该命令跟上一个案例不同的地方在于,从本地127.0.0.1修改为了远程地址211.103.214.132

本地:127.0.0.1:9000
远程:211.103.214.132:80
VPS: 做代理使用,使用22端口

注意

只能使用IP,不能使用域名指代地址

远程端口转发RPF

当外网访问不了本地的服务的时候,使用RPF

案例一:

首先,本地开启一个web服务

1
2
3
4
5
6
7
8
python -m SimpleHTTPServer 889

ssh -fgN -R 9000:127.0.0.1:889 root@VPS

本地:127.0.0.1:889
远程:VPS:9000

访问外网地址 = 访问(原先访问不了的)内网地址

动态端口转发DPF

我们拥有一个内网机器A的root权限,可以通过DPF,是的机器A作为我们的跳板机,可以成功访问内网其他机器。

ssh -fgN -D 本地代理端口888 -p ssh端口 目标ip

本地配置浏览器代理,127.0.0.1,端口设置为本地代理端口888(设置为本地未使用的任意端口)

即可访问通过本地代理端口,访问内网主机

总结:

  • 本地端口转发和远程端口转发有什么区别?

前者是内网访问不了外网等情况,一旦连接成功,访问本地端口即可。
后者是外网访问不了内网的情况,一旦连接成功,访问外网端口即可。
(=。=)
要选择哪种端口转发方式,要取决于要访问哪个服务,不能访问外网的服务,用本地端口转发;不能访问内网的服务,使用远程端口转发。

最后

killall -KILL sshd
一条命令关闭所有打开的ssh连接