SSH 很多小伙伴肯定都不陌生,但我们一般使用 SSH 只会使用到最基础的功能,也就是远程连接到设备终端操作设备。但是小山最近在折腾远程家里设备的时候发现 SSH 端口转发真的是个很好用的东西,所以想写一篇文章给大家介绍一下 SSH 端口转发以及用途。
首先我们来说一下端口转发是什么,简单的说端口转发就是将 A 端口的数据转发到 B 端口,这样访问 B 端口就相当于访问 A 端口,并且 AB 两个端口可以分别位于两个设备,可以是远程设备的端口,也可以是本地设备的端口,一般用于绕过防火墙访问内部设备的服务。那么 SSH 端口转发有什么不同呢?最大的不同就是它是基于 SSH 进行的数据转发,因此只要两台设备建立了 SSH 连接,就可以进行端口转发,且转发数据经过 SSH 协议加密的保护,这样不止提升了安全性,还易于使用。小山使用 SSH 端口转发的场景就是仅开放路由器的 SSH 端口,然后通过 SSH 端口转发,使我可以方便访问家里所有的设备,但是这些设备的端口还处于防火墙的保护,安全性有保障。
下面我就介绍下 SSH 端口转发的三种类型以及如何使用:
本地转发
本地转发是将远程端口转发到本地,可以用于在本地访问远程服务,本地转发通过ssh命令的-L参数指定本地端口、远程IP和端口。
比如ssh -L 8080:127.0.0.1:8888 root@192.168.1.1
,SSH 连接后,本地主机访问本地 8080 端口就相当于访问远程主机的 8888 端口,注意这里的 127.0.0.1 并不是本地主机的 127.0.0.1,而是远程主机的 127.0.0.1,当然也可以类似这样ssh -L 8080:192.168.1.10:8888 root@192.168.1.1
访问远程局域网的其他设备,这也是小山最喜欢的用途。
远程转发
远程转发相当于本地转发的反转,可以用于在远程访问本地服务,远程转发通过ssh命令的-R参数指定远程端口、本地IP和端口。
比如ssh -R 8080:127.0.0.1:8888 root@123.123.123.123
,SSH 连接后,远程主机访问本地 8080 端口就相当于访问本地主机的 8888 端口,当然也可以类似这样ssh -L 8080:192.168.1.10:8888 root@123.123.123.123
让远程主机访问本地局域网的其他设备,就像本地转发那样。
动态转发
动态转发有些特殊,与其叫它转发,不如叫代理更为合适。因为它相当于在两个主机之间建立了一条 SOCKS 代理,本地主机可以使用这条代理来访问远程主机的任何服务,亦或者是使用远程主机的互联网。动态转发通过ssh命令的-D参数指定本地端口。
比如ssh -D 12345 root@123.123.123.123
,SSH 连接后,本地主机的 12345 端口就会变成一条 SOCKS 代理,然后像这样curl -x socks://127.0.0.1:12345 http://127.0.0.1
就可以访问远程主机的 Web 服务了。curl -x socks://127.0.0.1:12345 http://mivm.cn
,也可以像这样使用远程主机的互联网访问任何服务。
不少软件也都支持 SSH 端口转发,这样就不需要公开端口的同时访问一些服务,比如数据库之类的。
微信扫描二维码关注我们
如果觉得文章有帮助到你,可以点击下方的打赏按钮赞助下服务器费用。
文章评论