====== Настройка AutoSSH‑туннеля с обратным проксированием (Ubuntu ≥ 20.04) ====== --- ===== 📋 Вводные данные ===== * **Локальный сервер** — Ubuntu, где будет работать //autossh//. * **Удалённый сервер** — **212.158.1.1**, SSH‑порт по умолчанию **22**. * Требуемый туннель: **-R 8004\:localhost:8004** (открыть 8004 на удалённой стороне, прокинуть к локальному 8004). --- ===== 1. Создаём системного пользователя ===== sudo adduser --system --group --home /home/autossh autossh * создаётся класс "system" без пароля, логин только по ключу. --- ===== 2. Генерируем ключ и настраиваем разрешения ===== sudo -u autossh -H bash -c ' mkdir -p ~/.ssh && chmod 700 ~/.ssh ssh-keygen -t ed25519 -f ~/.ssh/id\_ed25519 -N "" ' * будут файлы **id\_ed25519** и **id\_ed25519.pub**. --- ===== 3. Копируем публичный ключ на удалённый сервер ===== sudo -u autossh ssh-copy-id -i /home/autossh/.ssh/id\_ed25519.pub autossh\@212.158.1.1 * на удалённой стороне появится */home/autossh/.ssh/authorized\_keys*. * если пользователя **autossh** там нет — создайте так же и убедитесь, что он может слушать порт 8004. --- ===== 4. Тестируем ручное соединение ===== sudo -u autossh ssh -i /home/autossh/.ssh/id_ed25519 -R 8004\:localhost:8004 autossh\@212.158.1.1 * подключение должно пройти без пароля. * проверяем на удалёнке: ss -ltnp | grep 8004 --- ===== 5. Создаём unit‑файл systemd ===== # /etc/systemd/system/autossh-tunnel.service [Unit] Description=AutoSSH Tunnel :8004→212.158.1.1 After=network-online.target Wants=network-online.target [Service] User=autossh Environment="AUTOSSH_GATETIME=0" ExecStart=/usr/bin/autossh \ -M 20000 \ -N \ -o "ServerAliveInterval=60" \ -o "ServerAliveCountMax=3" \ -o "ExitOnForwardFailure=yes" \ -i /home/autossh/.ssh/id_ed25519 \ -R 8004:localhost:8004 autossh@212.158.1.1 Restart=always RestartSec=5 PrivateTmp=true ProtectSystem=full [Install] WantedBy=multi-user.target --- ===== 6. Активируем сервис ===== sudo systemctl daemon-reload sudo systemctl enable --now autossh-tunnel.service ==== Проверяем статус ==== systemctl status autossh-tunnel.service journalctl -u autossh-tunnel.service -f --- ===== 7. Настройки на удалённом сервере (по желанию) ===== * Чтобы порт **8004** был доступен всем интерфейсам, в */etc/ssh/sshd_config* пропишите: GatewayPorts yes затем `sudo systemctl reload sshd`. * Порты < 1024 требуют *root* или **CAP_NET_BIND_SERVICE** — здесь не нужно. --- ===== 8. Брандмауэр ===== * **Локальный**: ничего открывать не надо. * **Удалённый**: разрешаем входящее TCP/8004: sudo ufw allow 8004/tcp --- ===== 9. Обновление ключей ===== Перегенерируйте пару и повторите шаг 3. --- ==== Готово ==== Сервис работает от непривилегированного пользователя, автоматически восстанавливает туннель при разрывах.