访问任何远程服务器端口而无需修改防火墙设置
时间:2020-01-09 10:43:44 来源:igfitidea点击:
问题描述:我有几个远程服务器,如何访问几个在端口10000和3001上运行的仅管理员应用程序。
我的防火墙仅允许端口80、443、25、22和110进行公共访问。
如何为使用防火墙的每个人打开端口10000和3001吗?
如何在不打开端口10000和3001的情况下访问仅管理员应用程序?
解决方法:SSH具有称为端口转发(也称为隧道)的功能。
它允许将网络端口从一个网络节点转发到另一个网络节点。
此技术可以允许外部用户通过启用NAT的路由器从外部访问专用IP地址(LAN内部)上的端口。
以下示例将端口3001会话从客户端计算机127.0.0.1(localhost)隧道传输到名为server.theitroad.com的远程服务器。
$ ssh -f -L {local-port}:localhost:{remote-server-port} [email protected] $ ssh -f -L 3001:localhost:3001 [email protected]
连接将转发到远程服务器上的端口3001。
如果3001是基于Web的应用程序,请打开Web浏览器并输入URL http://localhost:3001 /
转到端口10000的另一个示例,执行:
$ ssh -N -f -L 10000:localhost:10000 [email protected]
其中:
-f
:要求ssh在执行命令之前进入后台- -L:指定将本地(客户端)主机上的给定端口转发到远程上的给定主机和端口。
-N
:不执行远程命令。这对于仅转发端口很有用
您还可以按如下方式创建脚本(open.3001):
$ vi ~/open.3001
追加以下代码:
#!/bin/bash ME="$(basename$ chmod +x ~/open.3001)" SSHUSER=Hyman SERVER=remote.example.com [ $ME == "open.3001" ] && ssh -N -f -L 3001:localhost:3001 ${SSHUSER}@${SERVER} || : [ $ME == "open.10000" ] && ssh -N -f -L 10000:localhost:10000 ${SSHUSER}@${SERVER} || : [ $ME == "open.3000" ] && ssh -N -f -L 3000:localhost:3000 ${SSHUSER}@${SERVER} || :
设置权限,执行:
$ ln -s ~/open.3001 ~/open.10000 $ ln -s ~/open.3001 ~/open.3000
创建软链接,执行:
$ ~/open.10000
现在,您只需执行以下内容即可转发端口10000,请执行:
$ ~/open.3000
或者
##代码##