通过SSH实现TCP/IP隧道(端口转发)是一种常见的方法,用于安全地将本地端口或远程端口的数据流通过SSH隧道加密传输。主要有两种端口转发方式:本地端口转发和远程端口转发,以及更高级的动态端口转发。以下是详细步骤:
1.本地端口转发
将本地端口的数据转发到远程主机。例如,你可以通过访问本地的某个端口,安全地访问远程服务器上的某个服务。
命令:
ssh-L[本地端口]:[目标地址]:[目标端口][用户名]@[SSH服务器地址]
参数说明:
[本地端口]:你希望监听的本地端口。
[目标地址]:远程服务器的地址(或localhost)。
[目标端口]:目标服务器的端口号。
[用户名]:SSH登录的用户名。
[SSH服务器地址]:用于建立SSH连接的服务器地址。
2.远程端口转发
将远程主机的端口数据转发到本地。例如,开放远程服务器的某个端口,供其他设备访问本地资源。
命令:
ssh-R[远程端口]:[目标地址]:[目标端口][用户名]@[SSH服务器地址]
参数说明:
[远程端口]:SSH服务器上需要监听的端口。
[目标地址]:本地机器的地址(或localhost)。
[目标端口]:本地服务器的端口号。
[用户名]:SSH登录的用户名。
[SSH服务器地址]:用于建立SSH连接的服务器地址。
3.动态端口转发
动态端口转发通过SOCKS5代理实现,可以灵活地转发多种服务,适用于代理场景。
命令:
ssh-D[本地端口][用户名]@[SSH服务器地址]
参数说明:
[本地端口]:SOCKS5代理监听的端口。
[用户名]:SSH登录的用户名。
[SSH服务器地址]:用于建立SSH连接的服务器地址。
4.持续运行SSH隧道
为了保持SSH隧道稳定,可以使用以下方法:
后台运行SSH隧道:
ssh-f-N-L8080:127.0.0.1:3306user@remote-server.com
-f:后台运行。
-N:不执行远程命令,仅建立隧道。
通过autossh实现自动重连:安装autossh(Linux或macOS环境):
sudoaptinstallautossh
启动命令:
autossh-f-N-L8080:127.0.0.1:3306user@remote-server.com
总之,根据你的具体需求来选择合适的端口转发方式。