Перейти к содержанию

TCP-туннели: команды подключения для пользователей

Помимо HTTP, dixu_proxy проксирует произвольный TCP-трафик через то же WebSocket-соединение device_client. Прокси терминирует TLS — устройству не нужно настраивать SSL ни для одного протокола (кроме VNC). Протокол на уровне реализации (как именно определяется slug по каждому порту) — dixu_proxy/README.md; эта страница — практический справочник команд подключения для пользователей/поддержки.

Ограничение для docker-стеков: SSH (порт 22), RDP (3389) и VNC (5900) недоступны, если туннель поднят через контейнерный стек (📦 docker-стек). Тумблеры этих протоколов в ЛК заблокированы с пояснительной подсказкой. Базы данных (PostgreSQL, MySQL, Redis, MongoDB) работают в docker-стеках только если контейнер с БД слушает на соответствующем порту внутри docker-сети.

Порты

Протокол Внешний порт Порт на устройстве Мин. роль
SSH 2222 22 VIP
RDP 3389 3389 PRO
VNC 4900 5900 PRO
PostgreSQL 4432 5432 PERS
MySQL 4306 3306 PERS
Redis 4379 6379 PERS
MongoDB 4017 27017 PERS

Порты активируются в личном кабинете → Туннель → Прямое TCP.

Команды подключения

# SSH — через ProxyCommand с DIXSU-заголовком
ssh -o "ProxyCommand=bash -c '{ echo DIXSU:slug; cat; } | nc slug.dix.su 2222'" \
  user@slug.dix.su

# RDP — прямое подключение (SNI из hostname)
xfreerdp /v:slug.dix.su:3389 /u:USER /cert:ignore

# VNC — прямое подключение через TLS (нужен x11vnc --ssl на устройстве)
vncviewer slug.dix.su::4900

# PostgreSQL — прямое подключение через TLS
psql "host=slug.dix.su port=4432 dbname=mydb user=postgres sslmode=require"

# MySQL — прямое подключение через TLS
mysql -h slug.dix.su -P 4306 -u root -p --ssl-mode=REQUIRED

# Redis — нужен --sni (redis-cli не берёт SNI из -h автоматически)
redis-cli -h slug.dix.su -p 4379 --tls --insecure --sni slug.dix.su

# MongoDB
mongosh "mongodb://slug.dix.su:4017/mydb?tls=true&tlsAllowInvalidCertificates=true"

# SFTP
sftp -o "ProxyCommand=bash -c '{ echo DIXSU:slug; cat; } | nc slug.dix.su 2222'" \
  user@slug.dix.su

SSH-ключи (рекомендуется)

Использование ключей вместо пароля — безопаснее и удобнее.

1. Генерация ключа на локальной машине

ssh-keygen -t ed25519 -C "my-pc" -f ~/.ssh/dixsu_tunnel
# создаёт ~/.ssh/dixsu_tunnel (приватный) и ~/.ssh/dixsu_tunnel.pub (публичный)

2. Копирование публичного ключа на устройство

ssh-copy-id -i ~/.ssh/dixsu_tunnel.pub \
  -p 2222 \
  -o "ProxyCommand=bash -c '{ echo DIXSU:slug; cat; } | nc slug.dix.su 2222'" \
  user@slug.dix.su

Или вручную — зайти на устройство и выполнить:

mkdir -p ~/.ssh && chmod 700 ~/.ssh
echo "содержимое_dixsu_tunnel.pub" >> ~/.ssh/authorized_keys
chmod 600 ~/.ssh/authorized_keys

3. Подключение с ключом

ssh -i ~/.ssh/dixsu_tunnel \
  -p 2222 \
  -o "ProxyCommand=bash -c '{ echo DIXSU:slug; cat; } | nc slug.dix.su 2222'" \
  user@slug.dix.su

4. ~/.ssh/config для удобства

Host mydevice
  HostName slug.dix.su
  User root
  Port 2222
  IdentityFile ~/.ssh/dixsu_tunnel
  ProxyCommand bash -c '{ echo DIXSU:slug; cat; } | nc slug.dix.su 2222'

После этого достаточно: ssh mydevice, sftp mydevice

5. Отключить парольный вход (опционально)

На устройстве в /etc/ssh/sshd_config:

PasswordAuthentication no
PubkeyAuthentication yes
systemctl restart sshd

~/.ssh/config без ключей

Host slug.dix.su
    ProxyCommand bash -c '{ echo DIXSU:slug; cat; } | nc %h 2222'

После этого: ssh user@slug.dix.su, sftp user@slug.dix.su, и DBeaver с SSH-туннелем тоже подхватят конфиг.

DBeaver — подключение к базам данных

Прямое TLS-подключение (рекомендуется):

DBeaver → New Connection → выбрать БД:

Параметр PostgreSQL MySQL
Host slug.dix.su slug.dix.su
Port 4432 4306
SSL включить useSSL=true
Verify cert выключить verifyServerCertificate=false

Вкладку SSH в DBeaver не использовать — прокси уже всё делает напрямую.

SFTP и файловые менеджеры

Настройте ~/.ssh/config (см. выше) и подключайтесь напрямую: - Krusader / Dolphin / FileZilla: sftp://user@slug.dix.su/ - Android: отдельное родное приложение с dixsu-туннелем внутри (без ProxyCommand и Termux) — см. Android-приложение: доступ к файлам и автобэкап