Skip to content

端口转发与跳板

本地转发:把远端端口拉到本机

最常用的场景:服务器上的管理面板只监听 127.0.0.1:8888,不想开公网,就通过 SSH 隧道访问。

bash
ssh -L 8888:127.0.0.1:8888 root@server

然后本地浏览器开 http://127.0.0.1:8888-L 本地端口:目标地址:目标端口,目标地址是从服务器视角看的。

-N 不开 shell,加 -f 转后台:

bash
ssh -fN -L 8888:127.0.0.1:8888 root@server

远程转发:把本机端口推到远端

反过来,让服务器能访问本机的某个端口:

bash
ssh -R 9000:127.0.0.1:3000 root@server

服务器上访问 127.0.0.1:9000 就到了本机的 3000。默认只绑服务器的回环地址,要对外得在 sshd 开 GatewayPorts yes

动态转发:SOCKS 代理

bash
ssh -D 1080 root@server

浏览器 SOCKS5 代理指到 127.0.0.1:1080,流量从服务器出去。临时用一下挺方便。

跳板

内网机器只能从堡垒机进:

Host internal
    HostName 10.0.0.5
    User root
    ProxyJump bastion

Host bastion
    HostName 203.0.113.1
    User root

ssh internal 会自动先连 bastion。老版本没有 ProxyJumpProxyCommand ssh -W %h:%p bastion

走 Cloudflare Tunnel

服务器不开 22 入站,SSH 通过 Cloudflare Tunnel 走:

Host server
    HostName ssh.example.com
    User root
    ProxyCommand cloudflared access ssh --hostname %h

Windows 上 ProxyCommand 得写 cloudflared.exe 的完整路径,where cloudflared 查。

细节见 Cloudflare Tunnel

个人笔记,写给未来忘事的自己。