首页 » 信息技术 »

SSH之本地端口转发(Local Port Forwarding)

2019年7月31日 / 19次阅读
SSH

SSH的端口转发,不管是本地还是远端,都与穿透防火墙有关系。本地端口转发,Local Port Forwarding,就是正面穿透防火墙。你在你自己的电脑上,不能访问防火墙内的网络,但是却可以通过SSH连接防火墙内的某台电脑。于是,这条SSH通道,就可以用来作为本地端口转发,让你实现穿透防火墙的效果。

我先画个图,对着图来说方便点:

SSH之本地端口转发

SSH之本地端口转发

A在防火墙外,A上面的一个应用,需要访问B服务器上的某个端口,比如12345端口,但是有防火墙挡住了;

不过,幸运的是,A可以对B发起SSH连接,我们可以建立一个SSH本地端口转发隧道;

在A上执行这个命令 $ ssh -N -L 54321:localhost:12345 username@B

这个命令建立了一条SSH本地端口转发的隧道,界面会提示你输入username登录B的密码,如果没有异常,界面就阻塞在那里了,这是正常的;

命令参数解析:-L表示是Local Port Forwarding,-N表示不要打开B服务器的shell,54321:localhost:12345 username@B表示的含义是,在A电脑上访问A自己的12345号端口,就相当于通过B访问(B的)localhost的12345号端口;

然后,A上应用访问A的54321的数据,就会自动通过SSH的加密隧道发到B,然后B自动解密后,发给B自己的12345号端口。这样,A就实现了穿透防火墙到达B。

也许你不太喜欢A的SSH操作界面阻塞在那里了,我们可以这样:$ ssh -N -f -L 54321:localhost:12345 username@B

增加-f参数,让这个隧道进程在后台运行;

以上命令还默认的SSH连接B使用22号端口,如果不是默认ssh端口,还需要在最后使用-p参数;像这样:$ ssh -N -f -L 54321:localhost:12345 username@B -p ssh_port_of_B

如果A不是要访问B的端口,而是访问C呢?如下图:

SSH本地转发,A通过B访问C

SSH本地转发,A通过B访问C

A只能SSH到B,而B和C在一个局域网里面,A需要访问C的23456端口;

在A上创建本地端口转发,命令是 $ ssh -N -L 54321:ip_of_host_C:23456 username@B

这样,在A本地访问54321端口,就相当于通过B来访问C的23456号端口。

A穿透了防火墙,通过B访问C。命令行两个端口号中间的目的主机,是从B的视角来写的:访问B自己的某个端口,B看到的就是localhost,或127.0.0.1,访问C的时候,B看到的就是C的ip或域名!!

现在,我们在A上访问B和C,还有个问题,只能在A上使用localhost:54321来访问,能否让另一台能够连上A的电脑也访问呢?把A当成一个网关?答案是:可以的。

SSH本地端口转发,X通过A访问C

SSH本地端口转发,X通过A访问C

X与A在一个局域网,X不能ssh到B和C,只有A能ssh到B,B和C在另一个局域网;

现在,X想要访问C的33333端口;

我们可以在A上建立一条ssh本地端口转发的隧道,打通C的33333号端口,然后将这条隧道共享给X使用;

$ ssh -g -N -L 12345:ip_of_host_C:33333 username@B

多了一个-g参数(gateway),表示A把自己的12345端口作为网关;

这样,X通过访问ip_of_host_A:12345,就相当于在访问C的33333端口。

总结要点

1, SSH隧道是一条加密隧道(本地转发,远端转发和Dynamic Port Forwarding),隧道建立成功之后,加密和解密自动进行;

2, 本地端口转发的目的地址和目的端口,是从SSH的对端的视角看出来的,不是从发起本地端口连接这一端的视角看;

3, 隧道不限于隧道两端的两台主机,两端的主机分别在两个局域网内,只有能建立ssh本地端口转发隧道,就相当于这两个局域网就打通了;

4, 可以隧道连接隧道,比如第1条隧道连接的远端主机的端口,又是另一条隧道的入口。(SSH的远端转发这篇里面有一个隧道连接隧道的case)

各位要自己多多测试验证。SSH是个很重要的工具,更多内容请参考本站SSH标签。

以上就是对SSH本地端口转发(Local Port Forwarding)的及介绍。

本文链接:https://www.maixj.net/ict/ssh-local-port-forwarding-22257

相关文章

留言区


前一篇:
后一篇:

栏目精选

云上小悟,麦新杰的独立博客

Ctrl+D 收藏本页

栏目


©Copyright 麦新杰 Since 2014 云上小悟独立博客版权所有 备案号:苏ICP备14045477号-1。云上小悟网站部分内容来源于网络,转载目的是为了整合信息,收藏学习,服务大家,有些转载内容也难以判断是否有侵权问题,如果侵犯了您的权益,请及时联系站长,我会立即删除。

网站二维码
go to top