这个想法是不是很大胆 😜
title: SSH 端口转发
date: '2026-07-03 10:48'
author: 广习习
url: >-
https://mqnu00.github.io/blog/posts/ops/ssh-port-forwarding/ssh-port-forwarding.html
discussion:
id: D_kwDOQdT3Qc4AniLU
number: 108
title: SSH 端口转发
url: ' https://github.com/mqnu00/blog/discussions/108 '
createdAt: '2026-07-03T08:06:30Z'
tags:
- ssh
- frp
- nat
背景
目前家里有一台小服务器
配置
| 类型 | 参数 |
|---|---|
| OS | Ubuntu 22.04.5 LTS x86_64 |
| Kernel | 6.8.0-124-generic |
| Shell | zsh 5.8.1 |
| CPU | Intel Celeron N3150 (4) @ 2.080GHz |
| Memory | 2GB * 2 DDR3 1333 MHz |
| DISK | TOSHIBA DT01ACA050 机械硬盘 500G |
| Great Wall GW600 256GB 固态硬盘 2.5 寸 | |
| Kingchuxing 256GB M.2 SATA 固态硬盘 2230 (外接移动硬盘) |
网络环境
使用小区免费的网络。IP 分发只有 IPV4,没有 IPV6。
tailscale
由于需要外网访问,使用了 tailscale,但是没有自配 derp,延迟很高。
复制
> tailscale ping 100.71.186.58 pong from laptop-mqnu00 (100.71.186.58) via DERP(hkg) in 329ms pong from laptop-mqnu00 (100.71.186.58) via DERP(hkg) in 318ms pong from laptop-mqnu00 (100.71.186.58) via DERP(hkg) in 343ms pong from laptop-mqnu00 (100.71.186.58) via DERP(hkg) in 291ms pong from laptop-mqnu00 (100.71.186.58) via DERP(hkg) in 266ms pong from laptop-mqnu00 (100.71.186.58) via DERP(hkg) in 312ms pong from laptop-mqnu00 (100.71.186.58) via DERP(hkg) in 328ms pong from laptop-mqnu00 (100.71.186.58) via DERP(hkg) in 317ms pong from laptop-mqnu00 (100.71.186.58) via DERP(hkg) in 318ms pong from laptop-mqnu00 (100.71.186.58) via DERP(hkg) in 311ms direct connection not established
frp
寻找免费的 frp 服务,只能提供一两个端口,速率也只有 10M 左右。
出现端口不够用的情况。
SSH 端口转发
实现效果是 FRP 穿透内网服务器 22 端口的同时,通过 SSH 转发服务器的其他端口,使得外网能够访问服务器的其他端口,又不用真正打通。
复制
ssh -L 本地端口:目标地址:目标端口 -p [FRP 映射的 SSH 端口] [用户名]@[服务器公网 IP]
比如我输入命令:
复制
ssh -L 5140:192.168.10.5:5140 -p xxxxx [email protected]
我电脑本地访问 127.0.0.1:5140,会被 ssh 进程监听捕获,转发消息到内网服务器,然后消息原封不动的发送给内网的 192.168.10.5:5140。
不过整个过程是通过 FRP 的连接,某种程度上实现了端口复用。
怎么 404 了