外观
端口转发与跳板
本地转发:把远端端口拉到本机
最常用的场景:服务器上的管理面板只监听 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 rootssh internal 会自动先连 bastion。老版本没有 ProxyJump 用 ProxyCommand ssh -W %h:%p bastion。
走 Cloudflare Tunnel
服务器不开 22 入站,SSH 通过 Cloudflare Tunnel 走:
Host server
HostName ssh.example.com
User root
ProxyCommand cloudflared access ssh --hostname %hWindows 上 ProxyCommand 得写 cloudflared.exe 的完整路径,where cloudflared 查。
细节见 Cloudflare Tunnel。