端口转发
Mobile SSH 在 Android 和 iOS 上都支持本地 SSH 端口转发。设备上的本地端口在 127.0.0.1 上监听,并通过 SSH 连接将流量转发到远程主机和端口。
Android 另有 VPN 页面,提供 SSH VPN、本地 SOCKS5 代理、WireGuard、Shadowsocks 和 OpenVPN。这些路由配置与下述本地端口转发分别保存。
已保存隧道的语法
端口转发规则以逗号分隔。每个条目使用两种形式之一:
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 服务器通过有序的已保存跳板机列表连接。编辑目标服务器,在通过以下服务器连接中添加堡垒机并按连接顺序排列。每一跳使用自身凭据,展开的路由最多八跳。
手机连接第一台堡垒机,其后每个地址都须从上一台服务器可达。本地转发与终端和 SFTP 使用同一条已验证 SSH 路由,转发最终目标从最后一台 SSH 服务器访问。每台堡垒机须允许继续转发 TCP,每台服务器均在认证前检查身份。跳板机仅支持 SSH,不适用于 Eternal Terminal。
Android VPN 路由
从主屏幕打开 VPN,添加或导入命名配置,然后点按启动图标。系统询问时批准 Android VPN 权限。启用期间图标变为停止路由;铅笔用于编辑,垃圾桶用于删除。常用 VPN 类型优先显示。
Android 同时只提供一条设备 VPN 连接,启动其他配置会切换原 VPN。本地 SSH SOCKS5 代理可继续通过非 SSH VPN 运行。Tailscale 使用独立应用,启动 Mobile SSH VPN 会替换其 VPN 连接。IKEv2/IPsec 由 Android VPN 设置管理,不在 Mobile SSH 中管理。
SSH VPN 和 SOCKS5 代理
- **SSH VPN:**选择保存的 SSH 服务器及其凭据和跳板机,再选择全部或指定应用和网站。服务器须允许 TCP 转发,无需 VPN 辅助程序。SSH 承载 TCP 和远程 DNS;分配给 SSH 的其他 UDP 被阻止,浏览器可能从 QUIC 回退到 TCP。
- **SOCKS5 代理:**在独立配置编辑器选择保存的 SSH 服务器,再让各参与应用使用本地代理和远程 DNS。默认地址为
127.0.0.1:1080,密码自动生成。复制含凭据的代理 URL提供兼容客户端可用的socks5h://URL。此模式可通过现有 VPN(包括 Tailscale)连接 SSH。SSH VPN 和 SSH SOCKS5 配置合计同时只能运行一个。
网站条目填写如 example.org 的域名,涵盖该域名及其子域。已识别但未列出的网站走普通网络。直接 IP 连接和通过加密 DNS 获得的地址无法可靠匹配列表,因此走 SSH。SSH VPN 同时应用应用和网站选择;SOCKS5 则通过配置各客户端决定参与范围。
远程 DNS 默认为 1.1.1.1:53,须使用 SSH 服务器可达的数字解析器地址。活动 SSH VPN 重连或等待认证时,分配给 SSH 的流量继续阻止,已知绕行目标正常联网。停止、切换配置、撤销 VPN 权限或应用终止会结束保护。这些客户端不保证 Android 始终开启或锁定模式保护。
WireGuard、Shadowsocks 和 OpenVPN
- **WireGuard:**导入或粘贴标准
.conf。AllowedIPs控制路由,DNS选择解析器。检查对端握手与流量计数;接口启用不代表对端可达。 - **Shadowsocks:**导入
ss://链接,或输入服务器、端口、密码、受支持加密方式和 DNS。支持 AES-128-GCM、AES-256-GCM 和 ChaCha20-Poly1305。TCP 和 UDP 走隧道;服务器须支持 UDP 中继才能承载 UDP 和 DNS。不支持必须使用插件的链接或 AEAD-2022。 - **OpenVPN:**导入内含证书和密钥的自包含
.ovpn文件。支持用户名/密码及加密私钥凭据,必须验证服务器证书。路由与 DNS 遵循配置和服务器;全隧道需要 VPN DNS。外部文件、脚本、插件、TAP 和交互式认证挑战不受支持。
应用内置这些协议引擎。Shadowsocks 和 OpenVPN 不提供 SSH VPN 的应用与网站选择控件。VPN 也不能解除其服务器供应商或管理员施加的互联网访问限制。
快捷设置磁贴
先启动一次 VPN 配置,将它选为 Mobile SSH VPN 磁贴的目标。Mobile SSH VPN 启用时,包括连接和重连期间,磁贴保持高亮。点按停止,再点按启动记忆的配置。它不会启动 SOCKS5 代理,也不会停止其他应用的 VPN。
Android 13 及以上首次打开 VPN 页面时会请求添加磁贴。拒绝后或旧版 Android 可从快捷设置 → 编辑添加。配置已删除或缺少权限时会打开 VPN 页面进行设置。
隧道故障排查
- 确保 SSH 会话已连接——转发规则在会话建立之后才会生效。
- 检查本地端口尚未被占用。
- 检查远程主机和端口可从 SSH 服务器到达。
- 当目标服务就在 SSH 服务器本身上时,使用
localhost。 - 转发到 SSH 服务器后面的另一台主机时,使用服务器的内部 DNS 名称或 IP。
- 跳板机路由须检查每一跳的凭据、身份和 TCP 转发权限。
- VPN 配置须检查所选服务器或配置、DNS、Android VPN 权限及其他活动 VPN。协议专属检查请参阅故障排查指南。