Проброс портов
Mobile SSH поддерживает локальный проброс портов SSH как на Android, так и на iOS. Локальный порт на устройстве слушает на 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 на устройстве. Это сделано намеренно: туннель остаётся локальным для устройства и исключаются неожиданности, связанные с loopback-адресами только по IPv6. Другие приложения на том же устройстве могут подключаться к проброшенному локальному порту, если операционная система разрешает им сетевой доступ.
Распространённые примеры
Доступ к веб-сервису, работающему на удалённом сервере:
8080
Затем откройте http://127.0.0.1:8080 в браузере на том же устройстве.
Доступ к серверу разработки:
3000:localhost:3000
Доступ к внутренней базе данных, доступной с SSH-сервера:
15432:db.internal:5432
Подключение через промежуточные серверы
На обеих платформах сохранённый SSH-сервер может подключаться через упорядоченный список промежуточных серверов. Отредактируйте целевой сервер, добавьте бастионы в разделе Подключаться через и задайте порядок. У каждого узла свои сохранённые учётные данные; развёрнутый маршрут может включать до восьми переходов.
Телефон обращается к первому бастиону, а каждый следующий адрес должен быть доступен с предыдущего сервера. Локальные пробросы используют тот же проверенный SSH-маршрут, что терминал и SFTP. Конечный адрес проброса достигается с последнего SSH-сервера. Каждый бастион должен разрешать дальнейшую передачу TCP, а подлинность каждого сервера проверяется до аутентификации. Такие маршруты требуют транспорта SSH и не применяются к Eternal Terminal.
VPN-маршрутизация на Android
Откройте VPN на главном экране, добавьте или импортируйте именованный профиль и нажмите Запустить. При необходимости подтвердите запрос VPN от Android. Пока профиль включён, кнопка меняется на Остановить маршрутизацию; карандаш редактирует профиль, корзина удаляет. Часто используемые типы VPN показываются первыми.
Android допускает только одно VPN-подключение устройства одновременно. Запуск другого профиля переключает VPN. Локальный SSH SOCKS5-прокси может продолжать работу через VPN другого типа. Tailscale использует отдельное приложение; запуск VPN в Mobile SSH заменяет его VPN-подключение. IKEv2/IPsec управляется в настройках VPN Android, а не в Mobile SSH.
SSH VPN и SOCKS5-прокси
- SSH VPN: выберите сохранённый SSH-сервер с его учётными данными и промежуточными узлами. Укажите все или отдельные приложения и сайты. Сервер должен разрешать передачу TCP; VPN-помощник на нём не нужен. SSH передаёт TCP и удалённый DNS; прочий UDP, направленный в SSH, блокируется, поэтому браузер может переключиться с QUIC на TCP.
- SOCKS5-прокси: выберите сохранённый SSH-сервер в отдельном редакторе профиля, затем настройте каждое участвующее приложение на локальный прокси с удалённым DNS. По умолчанию используются
127.0.0.1:1080и сгенерированный пароль. Копировать URL прокси с учётными данными выдаёт URLsocks5h://для совместимых клиентов. Этот режим позволяет обращаться к SSH через действующий VPN, включая Tailscale. Одновременно работает только один профиль SSH VPN или SSH SOCKS5.
Сайты задаются доменными именами, например example.org, включая само имя и его поддомены. Распознанные домены вне списка используют обычную сеть. Прямые подключения к IP и адреса, полученные через зашифрованный DNS, нельзя надёжно сопоставить со списком: они используют SSH. В SSH VPN одновременно применяются выбор приложений и сайтов; клиенты SOCKS5 выбираются настройкой самого клиента.
Удалённый DNS по умолчанию — 1.1.1.1:53; задайте числовой адрес резолвера, доступного с SSH-сервера. Пока активный SSH VPN переподключается или ожидает аутентификации, направленный в SSH трафик остаётся заблокированным, а известные обходные направления работают обычно. Остановка, переключение профиля, отзыв разрешения VPN или завершение приложения прекращают эту защиту. Клиенты не гарантируют режим постоянного VPN или блокировку соединений без VPN средствами Android.
WireGuard, Shadowsocks и OpenVPN
- WireGuard: импортируйте или вставьте стандартный файл
.conf.AllowedIPsопределяет маршруты,DNS— резолверы. Проверяйте рукопожатие пира и счётчики трафика: включённый интерфейс сам по себе не доказывает доступность пира. - Shadowsocks: импортируйте ссылку
ss://либо задайте сервер, порт, пароль, поддерживаемый шифр и адрес DNS. Поддерживаются AES-128-GCM, AES-256-GCM и ChaCha20-Poly1305. TCP и UDP идут через туннель; для UDP и DNS серверу нужна ретрансляция UDP. Ссылки с обязательными плагинами и шифры AEAD-2022 не поддерживаются. - OpenVPN: импортируйте самодостаточный файл
.ovpnсо встроенными сертификатами и ключами. Поддерживаются имя пользователя/пароль и зашифрованные закрытые ключи. Проверка сертификата сервера обязательна. Маршруты и DNS определяются профилем и сервером; полному туннелю нужен DNS-резолвер VPN. Внешние файлы, скрипты, плагины, TAP и интерактивные запросы аутентификации не поддерживаются.
Движки этих протоколов входят в приложение. В Shadowsocks и OpenVPN нет выбора приложений и сайтов, доступного в SSH VPN. VPN также не может дать серверу доступ в интернет, ограниченный его провайдером или администратором.
Плитка быстрых настроек
Запустите профиль VPN один раз, чтобы выбрать его для плитки Mobile SSH VPN. Плитка подсвечена, пока VPN Mobile SSH включён, в том числе при подключении и переподключении. Касание останавливает его, следующее запускает запомненный профиль. Плитка не запускает SOCKS5-прокси и не останавливает VPN другого приложения.
На Android 13 и новее первое открытие страницы VPN вызывает запрос на добавление плитки. Если вы отказались или используете более раннюю версию Android, добавьте её через Быстрые настройки → Изменить. Если профиль удалён или нет разрешения, откроется страница VPN для настройки.
Устранение неполадок с туннелями
- Убедитесь, что SSH-сессия подключена — пробросы поднимаются после того, как поднимется сессия.
- Проверьте, что локальный порт ещё не занят другим процессом.
- Проверьте, что удалённый хост и порт доступны с SSH-сервера.
- Используйте
localhost, когда служба назначения находится на самом SSH-сервере. - Используйте внутреннее DNS-имя или IP-адрес сервера при пробросе на другой хост за SSH-сервером.
- Для маршрута через промежуточные серверы проверьте учётные данные, подлинность и разрешение передачи TCP на каждом узле.
- Для профилей VPN проверьте сервер или конфигурацию, DNS, разрешение Android на VPN и другие активные VPN. Проверки для отдельных протоколов описаны в руководстве по устранению неполадок.