TGViewer
LinuxCamp | DevOps LinuxCamp | DevOps @linuxcamp_tg · 13.6K subscribers
Post #392 6.89K
autossh — чтобы SSH-туннели не отваливались

Обычный "ssh -L" рвётся: сеть пропала, ноут ушёл в сон — туннель умер. Тулза autossh следит за соединением и сам перезапускает его. Незаменим для баз, Grafana, внутренних API — всего, что должно «всегда работать».

Установка:


sudo apt install autossh


Быстрый старт:

Достаточно заменить привычную команду ssh -L на autossh, добавив пару опций. Например, вместо:


ssh -L 5432:localhost:5432 user@111.111.111.111


Пишем:


autossh -M 0 -fN -L 5432:localhost:5432 user@111.111.111.111


Параметры тут важны. Флаг "-fN" означает запуск в фоне без запуска удалённой команды. Флаг "-M 0" отключает echo-порт, чтобы не мешал, — вместо него autossh будет использовать настройки keep-alive из SSH-конфига.

Надёжность через keep-alive:

Чтобы autossh действительно знал, когда туннель умер, нужно включить keep-alive. Добавьте в "~/.ssh/config":


Host *
ServerAliveInterval 30
ServerAliveCountMax 3


Теперь SSH будет каждые 30 секунд отправлять пинг на сервер. Если три пинга подряд не получат ответа, соединение считается мёртвым - и autossh запустит его заново.

Примеры из практики:

Обратный туннель (если сервер стоит за NAT или роутером):


autossh -M 0 -fN -R 2222:localhost:22 user@111.111.111.111


На VPS теперь можно выполнить ssh -p 2222 localhost — и попасть внутрь домашнего сервера, как будто он сам подключился. SOCKS-прокси с автопереподключением:


autossh -M 0 -fN -D 1080 user@111.111.111.111


Выставляете localhost:1080 в браузере - и получаете надёжный прокси, который не развалится при первой же потере Wi-Fi.

Автозапуск с systemd:

Если туннель нужен всегда (например, при старте сервера) — стоит обернуть autossh в systemd-сервис:


# /etc/systemd/system/db-tunnel.service

[Unit]
Description=Persistent SSH tunnel to prod DB
After=network-online.target
Wants=network-online.target

[Service]
User=deploy
ExecStart=/usr/bin/autossh -M 0 -N -L 5432:localhost:5432 deploy@db-host
Restart=always
RestartSec=10

[Install]
WantedBy=multi-user.target


Активировать можно одной командой:


sudo systemctl enable --now db-tunnel.service


Теперь туннель поднимется при загрузке сервера и будет перезапущен, если вдруг упадёт.

Вывод:

autossh незаметный, но жизненно важный инструмент. Просто заменяешь ssh на autossh, и туннель больше не рвётся. Настроил один раз - и забыл, что раньше ты делал это вручную.

LinuxCamp | #utils
  • ❤ 28
  • 👍 16
  • 🔥 15
  • ✍ 2
  • ❤‍🔥 1
More from @linuxcamp_tg
  1. Sep 28, 2026Проекту GNU вчера исполнилось 43 года 1983 год: Ричард Столлман объявил планы разработать…
  2. Sep 25, 2026Linux будет работать на ноутах с Snapdragon X2. Qualcomm добавляет полноценную поддержку L…
  3. Sep 24, 2026Так все по делу)) Советует же самый быстрый фикс LinuxCamp | #memes
  4. Sep 23, 2026Планы на 3 октября — прийти на RWB Infra x Security Meetup Мы направим прожекторы на инфра…
  5. Sep 22, 2026Ещё одна рекордная неделя для AI-разработки в Linux. На прошлой неделе в ядро попало 1 634…
  6. Sep 17, 2026Открыл плейлист, а как выйти - непонятно 😁 LinuxCamp | #memes
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →