Today

Удалённый доступ к домашнему серверу через SSH-туннель

Введение

Когда у вас есть домашний сервер, рано или поздно возникает потребность получить к нему доступ извне. Но что делать, если провайдер не выдаёт белый IP-адрес или вы не хотите светить свой домашний адрес в интернете? Решение есть - SSH-туннель.

В этой статье я расскажу, как настроить удалённый доступ к домашнему серверу через SSH-туннель с использованием промежуточного VPS. Этот метод безопасен, надёжен и не требует покупки статического IP у провайдера.

Почему именно SSH-туннель?

SSH-туннелирование имеет несколько преимуществ перед другими методами:

  • Безопасность - весь трафик шифруется
  • Простота - не нужно настраивать VPN или прокси
  • Надёжность - SSH есть практически на любой системе
  • Бесплатно - не нужны платные сервисы

Что понадобится

Для настройки вам потребуется:

  1. VPS с белым IP-адресом (можно самый дешёвый за 200-300 ₽/мес)
  2. Домашний сервер или компьютер с Linux
  3. Базовые знания командной строки

Пошаговая настройка

Шаг 1: Настройка VPS

Подключаемся к нашему VPS и редактируем конфигурацию SSH:

sudo nano /etc/ssh/sshd_config

Добавляем или раскомментируем следующие строки:

GatewayPorts yes
ClientAliveInterval 60
ClientAliveCountMax 3

Перезапускаем SSH-сервер:

sudo systemctl restart sshd

Шаг 2: Создание SSH-туннеля с домашнего сервера

Теперь с домашнего сервера создаём постоянный SSH-туннель к VPS:

ssh -R 8080:localhost:80 \
    -R 2222:localhost:22 \
    -N -q \
    user@your-vps-ip

Разберём команду:

  • -R 8080:localhost:80 - пробрасываем порт 80 домашнего сервера на порт 8080 VPS
  • -R 2222:localhost:22 - пробрасываем SSH домашнего сервера
  • -N - не выполняем команды на удалённом сервере
  • -q - тихий режим (без лишних сообщений)

Безопасность

Несколько советов по безопасности:

  • Используйте аутентификацию по ключам, а не по паролю
  • Настройте fail2ban для защиты от брутфорса
  • Ограничьте доступ к проброшенным портам через firewall
  • Регулярно обновляйте систему

Пример настройки firewall на VPS:

sudo ufw allow from YOUR_HOME_IP to any port 8080
sudo ufw enable

Автоматизация

Чтобы туннель автоматически восстанавливался при обрыве связи, создадим systemd-сервис:

sudo nano /etc/systemd/system/ssh-tunnel.service

Содержимое файла:

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

[Service]
User=your-user
ExecStart=/usr/bin/autossh -M 0 \
    -o "ServerAliveInterval 30" \
    -o "ServerAliveCountMax 3" \
    -R 8080:localhost:80 \
    -R 2222:localhost:22 \
    -N user@your-vps-ip
Restart=always
RestartSec=10

[Install]
WantedBy=multi-user.target

Активируем сервис:

sudo systemctl enable ssh-tunnel
sudo systemctl start ssh-tunnel
sudo systemctl status ssh-tunnel

Заключение

SSH-туннелирование - это элегантное решение для доступа к домашнему серверу. Оно не требует сложной настройки, работает стабильно и безопасно.

Теперь вы можете получить доступ к своему домашнему серверу из любой точки мира, просто подключившись к VPS. А если настроить Nginx на VPS как reverse-прокси, можно даже хостить веб-сайты с домашнего сервера!