端口转发
Mobile SSH 在 Android 和 iOS 上都支持本地 SSH 端口转发。设备上的本地端口在 127.0.0.1 上监听,并通过 SSH 连接将流量转发到远程主机和端口。
已保存隧道的语法
端口转发规则以逗号分隔。每个条目使用两种形式之一:
PORT
LOCAL:REMOTEHOST:REMOTE
简短形式:
8080
这会在设备上绑定 127.0.0.1:8080,并从服务器的角度将其转发到 localhost:8080。
完整形式:
3000:localhost:3000
这会在设备上绑定 127.0.0.1:3000,并通过 SSH 将其转发到远程端的 localhost:3000。
多个转发:
8080, 3000:localhost:3000, 15432:db.internal:5432
向已保存的服务器添加隧道
- 打开 Saved Servers。
- 添加或编辑服务器配置。
- 在 Port forwards 中输入转发规则。
- 保存服务器。
- 连接到服务器。
应用会在 SSH 会话连接后应用已保存的转发规则。
隧道属于服务器档案
转发规则声明在已保存的服务器上,并在该服务器连接时建立。两个平台都没有单独的界面用于在会话进行中添加或移除隧道:要更改转发规则,请编辑服务器档案并重新连接。
这是有意的取舍——写在档案里的隧道,每次连接时都会重新建立,包括在新网络上重连之后,无需你再手动搭一遍。
IPv6 目标地址
IPv6 目标地址必须用方括号括起来,以免其中的冒号被误当成端口分隔符:
8080:[2001:db8::1]:80
未加方括号的裸 IPv6 地址会因存在歧义而被拒绝,而不是被悄悄误读。同样的方括号写法也适用于服务器的地址字段,后面还可以附带可选端口([fe80::1]:22)。
地址绑定
Mobile SSH 将本地转发绑定到设备上的 127.0.0.1。这是有意为之:使隧道保持在设备本地,并避免仅 IPv6 回环带来的意外。如果操作系统允许同一设备上其他应用的网络访问,它们可能可以连接到转发的本地端口。
常见示例
访问在远程服务器上运行的 Web 服务:
8080
然后在同一设备的浏览器中打开 http://127.0.0.1:8080。
访问开发服务器:
3000:localhost:3000
访问可从 SSH 服务器到达的内部数据库:
15432:db.internal:5432
隧道故障排查
- 确保 SSH 会话已连接——转发规则在会话建立之后才会生效。
- 检查本地端口尚未被占用。
- 检查远程主机和端口可从 SSH 服务器到达。
- 当目标服务就在 SSH 服务器本身上时,使用
localhost。 - 转发到 SSH 服务器后面的另一台主机时,使用服务器的内部 DNS 名称或 IP。