ssh 端口映射相关命令详解
一、本地端口转发(Local Port Forwarding)
ssh -L [本地监听地址:]本地端口:目标地址:目标端口 用户名@SSH服务器
ssh -L 3306:localhost:3306 user@remote-server
用于将⌈目标地址:目标端口⌋的端口通过ssh隧道映射到本地,这样在本地就可以访问到⌈目标地址:目标端口⌋的服务。PS:⌈目标地址:目标端口⌋是”SSH服务器”可以访问的地址.
二、远程端口转发(Remote Port Forwarding)
ssh -R [远程监听地址:]远程端口:目标地址:目标端口 用户名@SSH服务器
ssh -R 8080:localhost:3000 user@remote-server
用于将⌈目标地址:目标端口⌋通过ssh隧道映射到远端,这样远端服务器就可以通过ssh隧道访问到⌈目标地址:目标端口⌋。PS:⌈目标地址:目标端口⌋是本地可访问地址.
三、动态端口转发 / SOCKS 代理(Dynamic Port Forwarding)
ssh -D [本地监听地址:]本地端口 用户名@SSH服务器
ssh -D 1080 user@remote-server
用于在本地建立一个 SOCKS5 代理服务器通过ssh隧道连接到远端服务器。可以在软件中设置socks5代理,通过该代理访问网络。
四、常用辅助参数详解
| 参数 | 作用 |
|---|---|
-N | 不执行远程命令,不打开 shell,仅用于建立端口转发 |
-f | 在认证完成后将 SSH 放入后台运行(常与 -N 合用) |
-C | 启用数据压缩,提升慢速网络上的传输效率 |
-g | 允许远程主机连接本地转发的端口(默认仅允许本机连接) |
-p <端口> | 指定 SSH 服务器的端口(默认 22) |
-i <私钥文件> | 指定用于认证的私钥 |
-o ServerAliveInterval=60 | 每 60 秒发送保活包,防止连接因超时被断开 |
-v / -vv | 显示调试信息,排错时非常有用 |