端口转发

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

向已保存的服务器添加隧道

  1. 打开 Saved Servers
  2. 添加或编辑服务器配置。
  3. Port forwards 中输入转发规则。
  4. 保存服务器。
  5. 连接到服务器。

应用会在 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

隧道故障排查