Команды обратного туннеля (Reverse SSH Tunnel) — полный справочник
Базовые команды
1. Самый простой обратный туннель
bash
# На телефоне (Termux) — подключаемся к Ubuntu и пробрасываем порт 8022 обратно
ssh -R 8022:localhost:8022 alensav26@192.168.1.124
2. С явным указанием порта SSH (если Ubuntu слушает не на 22)
bash
ssh -p 2222 -R 8022:localhost:8022 alensav26@192.168.1.124
3. Без входа в оболочку (только туннель)
bash
ssh -fN -R 8022:localhost:8022 alensav26@192.168.1.124
4. С отладкой (чтобы видеть ошибки)
bash
ssh -v -R 8022:localhost:8022 alensav26@192.168.1.124
С ключами (без пароля)
5. Скопировать ключ с телефона на Ubuntu
bash
# На телефоне — показать ключ
cat ~/.ssh/id_ed25519.pub
# На Ubuntu — добавить ключ
echo "ssh-ed25519 AAA..." >> ~/.ssh/authorized_keys
6. Туннель с ключом (уже без пароля)
bash
ssh -i ~/.ssh/id_ed25519 -R 8022:localhost:8022 alensav26@192.168.1.124
Проброс нескольких портов
7. Проброс нескольких портов одновременно
bash
ssh -R 8022:localhost:8022 -R 5900:localhost:5900 alensav26@192.168.1.124
8. Проброс порта с другого хоста в сети
bash
# Пробрасываем порт с другого устройства (например, 192.168.1.50:80) через телефон
ssh -R 8080:192.168.1.50:80 alensav26@192.168.1.124
Постоянный туннель (автопереподключение)
9. С автоматическим переподключением (autossh)
bash
# Установка autossh в Termux
pkg install autossh -y
# Запуск с автопереподключением
autossh -M 0 -o "ServerAliveInterval 60" -o "ServerAliveCountMax 3" -R 8022:localhost:8022 alensav26@192.168.1.124
10. В фоне с автопереподключением
bash
autossh -M 0 -f -o "ServerAliveInterval 60" -o "ServerAliveCountMax 3" -R 8022:localhost:8022 alensav26@192.168.1.124
🛠️ Полезные опции
|
Опция |
Что делает |
|
-f |
Запуск в фоне |
|
-N |
Не выполнять команды (только туннель) |
|
-v |
Подробный вывод (отладка) |
|
-vv |
Ещё более подробный вывод |
|
-p |
Указать порт SSH-сервера |
|
-i |
Указать файл ключа |
|
-o "ServerAliveInterval 60" |
Проверка соединения каждые 60 секунд |
📱 После установки туннеля
11. Подключиться к Termux через туннель (из Ubuntu)
bash
ssh -p 8022 u0_a368@localhost
12. Запустить команду в Termux через туннель (без входа)
bash
ssh -p 8022 u0_a368@localhost "pkg list-installed"
13. Скопировать файлы через туннель
bash
# Из Ubuntu в Termux
scp -P 8022 file.txt u0_a368@localhost:/sdcard/
# Из Termux в Ubuntu
scp -P 8022 u0_a368@localhost:/sdcard/file.txt .
Продвинутые сценарии
14. Туннель через публичный сервер (для доступа из интернета)
bash
# На телефоне — подключаемся к VPS и пробрасываем порт
ssh -R 8022:localhost:8022 user@vps-server.com
15. SOCKS5 прокси через туннель
bash
# На телефоне — создаём динамический прокси
ssh -D 1080 -R 8022:localhost:8022 alensav26@192.168.1.124
# Теперь в Ubuntu можно использовать localhost:1080 как SOCKS5 прокси
16. Проброс порта из Ubuntu на телефон (прямой туннель)
bash
# На телефоне — пробрасываем порт Ubuntu к себе
ssh -L 8080:localhost:80 alensav26@192.168.1.124
# Теперь на телефоне можно открыть localhost:8080 и увидеть веб-сервер Ubuntu
Памятка: структура туннеля
text
Телефон (Termux) Ubuntu (ноутбук)
| |
| ssh -R 8022:localhost:8022 ------> |
| |
| (туннель установлен) |
| |
| | ssh -p 8022 u0_a368@localhost
| <------ подключение через порт 8022 ------|
| |
v v
⚠️ Типичные ошибки и их решение
|
Ошибка |
Решение |
|
Connection refused |
SSH-сервер на Ubuntu не запущен |
|
Connection timed out |
Неправильный IP или телефон в другой сети |
|
Host key verification failed |
Выполнить ssh-keygen -R IP_адрес |
|
Permission denied |
Неправильный пароль или ключ |
|
Channel setup failed |
Порт уже занят |
📋 Быстрый старт (копируйте и вставляйте)
bash
# 1. На Ubuntu — убедитесь, что SSH работает
sudo systemctl start ssh
# 2. На телефоне — установите туннель
ssh -R 8022:localhost:8022 alensav26@192.168.1.124
# 3. На Ubuntu (в новом терминале) — подключитесь к Termux
ssh -p 8022 u0_a368@localhost
Какой вариант вам нужен? Если хотите настроить автоматический туннель при загрузке Termux, или пробросить графику (VNC/RDP) — я помогу! 😊