共计 1279 个字符,预计需要花费 4 分钟才能阅读完成。
SSH端口转发的正式用法指南
一、SSH端口转发简介
SSH(Secure Shell)除了提供安全的远程登录外,还可以用于安全地转发TCP连接,常用于绕过防火墙限制或访问受限的网络资源。SSH的端口转发包括本地端口转发(-L
)、远程端口转发(-R
)和动态端口转发(-D
)。
二、本地端口转发(Local Port Forwarding)
本地端口转发使用户能够通过本地计算机的一个端口访问远程服务器或远程服务器所能访问的其他网络资源。
命令示例:
ssh -NL 81:100.96.5.1:3000 -v [email protected]
参数说明:
-N
: 不执行远程命令,仅建立端口转发。-L
: 本地端口转发。81:100.96.5.1:3000
:将本地81端口映射到远程主机(10.140.142.1)可访问的IP地址100.96.5.1
的3000端口。
-v
: 显示详细的执行过程,便于排错。[email protected]
: 登录到远程服务器。
应用场景:
- 在本地访问处于内网中的远程Web服务或数据库等服务。
- 绕过网络防火墙限制。
三、远程端口转发(Remote Port Forwarding)
远程端口转发允许用户通过远程服务器的端口访问本地计算机的服务。
命令示例:
ssh -NR 8080:localhost:80 user@remote_server
参数说明:
-R
: 远程端口转发。8080:localhost:80
:将远程服务器的8080端口映射到本地主机的80端口。
- 用户访问远程服务器的8080端口,实际访问的是本地主机的80端口服务。
应用场景:
- 使本地服务能被远程用户访问。
- 提供临时的远程维护通道。
- 避免复杂的网络设置,如VPN或公网IP申请。
实际命令示例:
ssh -NR 2222:localhost:22 remote_user@remote_host
此时,通过远程服务器执行以下命令即可访问本地主机:
ssh -p 2222 localhost
四、动态端口转发(Dynamic Port Forwarding)
动态端口转发创建一个本地SOCKS代理服务器,允许本地客户端程序通过远程服务器访问互联网。
命令示例:
ssh -ND 1080 user@remote_server
应用场景:
- 浏览器或其他客户端程序通过SOCKS代理安全访问远程网络。
- 绕过地域或网络限制访问特定资源。
五、通过SSH跳板实现链式端口转发
SSH的ProxyCommand选项支持通过跳板机连接到远程服务器,同时建立远程端口转发。
命令示例:
ssh -o ProxyCommand="ssh -W %h:%p user_b@机器b的IP" -NR 2080:localhost:2080 user_c@机器c的IP
参数说明:
-o ProxyCommand
: 指定连接目标服务器时使用的代理(跳板机)。ssh -W %h:%p user_b@机器b的IP
: 通过机器b跳转连接到机器c。-NR 2080:localhost:2080
: 将机器c的2080端口转发到本地主机的2080端口。
应用场景:
- 内网穿透,使位于深层内网的机器能够访问到本地服务。
- 通过跳板机安全地访问内部资源。
正文完