LinuxНизкая

SSH Туннель: Практическое руководство по созданию безопасного соединения

SSH туннель позволяет создать защищенное соединение через небезопасную сеть, обеспечивая безопасный доступ к удаленным сервисам. В этом гайде вы научитесь создавать туннели различных типов.

Обновлено 9 апреля 2026 г.
15-20 мин
Средняя
FixPedia Team
Применимо к:Linux (любой дистрибутив)OpenSSH 7.0+

Введение

SSH туннель — это мощный инструмент для создания защищенного соединения через небезопасную сеть. Он позволяет перенаправлять сетевой трафик через зашифрованное SSH соединение, обеспечивая конфиденциальность данных и обходя сетевые ограничения. В этой статье мы рассмотрим различные типы SSH туннелей и их практическое применение.

Требования

Перед созданием SSH туннеля убедитесь, что у вас есть:

  • Доступ к удаленному серверу с установленным SSH сервером
  • SSH клиент на вашей локальной машине (обычно предустановлен в Linux)
  • Права доступа к необходимым портам
  • SSH учетные данные (пароль или SSH ключи)

Шаг 1: Подготовка SSH клиента

Сначала проверьте, что SSH клиент установлен и работает:

ssh -V

Если SSH не установлен, установите его:

sudo apt update
sudo apt install openssh-client

Проверьте доступность удаленного сервера:

ping -c 3 remote-server.com

💡 Совет: Для постоянных соединений рекомендуется настроить аутентификацию по SSH ключам вместо пароля.

Шаг 2: Создание локального туннеля

Локальный туннель перенаправляет трафик с вашей локальной машины на удаленный сервер. Это полезно для безопасного доступа к сервисам, запущенным на удаленном сервере.

Команда для создания локального туннеля:

ssh -L 8080:localhost:80 user@remote-server.com

В этой команде:

  • 8080 — локальный порт на вашей машине
  • localhost:80 — адрес и порт на удаленном сервере
  • user@remote-server.com — ваши учетные данные

После выполнения команды вы можете открыть http://localhost:8080 в браузере, и трафик будет перенаправлен на http://remote-server.com:80 через зашифрованный туннель.

Шаг 3: Создание удаленного туннеля

Удаленный туннель позволяет предоставить доступ к сервисам на вашей локальной машине с удаленного сервера. Это полезно для демонстрации веб-сайтов или предоставления доступа к локальным сервисам.

Команда для создания удаленного туннеля:

ssh -R 8080:localhost:3000 user@remote-server.com

В этой команде:

  • 8080 — порт на удаленном сервере
  • localhost:3000 — адрес и порт на вашей локальной машине

Теперь, если вы откроете http://remote-server.com:8080 с любой машины, трафик будет перенаправлен на http://localhost:3000 на вашей локальной машине.

Шаг 4: Создание динамического туннеля

Динамический туннель создает SOCKS прокси, который позволяет безопасно обходить интернет-ограничения и шифровать весь веб-трафик.

Команда для создания динамического туннеля:

ssh -D 1080 user@remote-server.com

В этой команде:

  • 1080 — порт SOCKS прокси на вашей машине

После создания туннеля настройте ваш браузер или приложение на использование SOCKS прокси localhost:1080. Весь трафик будет проходить через зашифрованный туннель.

Проверка результата

Чтобы убедиться, что туннель работает:

  1. Проверьте активность SSH процесса:
    ps aux | grep ssh
    
  2. Проверьте соединение с сервисом через туннель:
    curl -I http://localhost:8080
    
  3. Для динамического туннеля проверьте настройки прокси:
    echo "SOCKS5 localhost:1080" | nc -zv localhost 1080
    

Возможные проблемы

Ошибка "Connection refused"

Если вы получаете ошибку "Connection refused", проверьте:

  • Доступность порта на удаленном сервере
  • Права доступа к портам (некоторые порты требуют права root)
  • Настройки файрвола на обеих машинах

Туннель постоянно рвется

Если SSH туннель постоянно разрывается, попробуйте:

  • Добавить параметр -o ServerAliveInterval=60 для поддержания соединения
  • Настроить keep-alive на SSH сервере
  • Проверить стабильность интернет-соединения

Недостаточно прав для использования порта

Если вы получаете ошибку о недостаточных правах при использовании портов ниже 1024, используйте порты выше 1024 или запускайте команду с правами root:

sudo ssh -L 80:localhost:80 user@remote-server.com

SSH туннели — это мощный инструмент для обеспечения безопасности и обхода сетевых ограничений. С практикой вы сможете создавать сложные конфигурации для различных сценариев использования.

Часто задаваемые вопросы

В чем разница между локальным и удаленным туннелем?
Как проверить, работает ли SSH туннель?
Можно ли создать SSH туннель без пароля?

Полезное

Подготовка SSH клиента
Создание локального туннеля
Создание удаленного туннеля
Создание динамического туннеля