software:ssh:ssh-auto-tunnel

SSH: Устойчивый тоннель

Иногда бывает необходимо сделать тоннель подручными средствами. OpenVPN, Wireguard и прочее это все, конечно, здорово, но для некоторых случаев избыточно.

Есть возможность быстренько настроить устойчивый тоннель средствами SSH и спрятать в нем трафик или сделать доступ к определенному сервису.

Пример: заблокирован OpenVPN до определенного сервера, нужно пробросить локальный порт чтобы было подключение через ssh-тоннель.

Что и где:

  • remote-user - наш пользователь, под которым будет осуществляться подключение. Авторизация по ключам, их необходимо создать заранее
  • LOCAL-IP - локальный IP, на который будет приниматься подключение
  • REMOTE-IP - удаленный сервер с OpenVPN

Ставим autossh:

sudo apt install autossh

Настраиваем подключение в файле /home/remote-user/.ssh/config:

Host REMOTE-IP
  HostName REMOTE-IP
  User remote-user
  IdentityFile ~/.ssh/id_remote-user
  IdentitiesOnly yes

Создаем файл сервиса /etc/systemd/system/ssh-tunnel.service со следующим содержимым:

[Unit]
Description=SSH Tunnel
After=network.target

[Service]
User=remote-user
ExecStart=/usr/bin/autossh -o ServerAliveInterval=30 -o "ServerAliveCountMax 3" -M 44444 -o ExitOnForwardFailure=yes -gnNT -L LOCAL-IP:1194:localhost:1194 remote-user@REMOTE-IP
RestartSec=15
Restart=always
KillMode=mixed

[Install]
WantedBy=multi-user.target

Запускаем:

systemctl daemon-reload
systemctl start ssh-tunnel.service
  • software/ssh/ssh-auto-tunnel.txt
  • Последнее изменение: 2025/06/07 13:21
  • fireball