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

Что такое SSH?

SSH был разработан как замена небезопасным протоколам, таким как Telnet и rlogin, которые передавали данные в открытом виде, включая пароли. Используя криптографические методы, SSH гарантирует, что все данные, включая аутентификационные, защищены от перехвата и подмены.

Основные функции SSH

Безопасное удаленное управление: позволяет выполнять команды на удаленном сервере так, как будто вы находитесь непосредственно перед ним.

Источник: Medium

Файл-передача: обеспечивает безопасную передачу файлов с помощью таких инструментов, как SCP (Secure Copy Protocol) и SFTP (SSH File Transfer Protocol).

Туннелирование и перенаправление портов: позволяет безопасно передавать данные через небезопасные сети, используя SSH-туннели.

Подготовка к подключению по SSH

Требования

  • SSH-сервер на удаленной машине: обычно это OpenSSH-server на UNIX-системах;
  • SSH-клиент на локальной машине: стандартно устанавливается на Linux и macOS. Для Windows доступны PuTTY или встроенный OpenSSH-клиент в новых версиях Windows 10 и 11;
  • Учетные данные: имя пользователя и пароль или SSH-ключ.

Источник: ZDnet

Установка SSH-клиента

На Linux и macOS SSH-клиент обычно установлен по умолчанию. Для Windows есть два пути:

  • Скачать и установить PuTTY;
  • Пользователи Windows 10 и 11 могут установить OpenSSH-клиент через «Параметры» > «Приложения»  > «Дополнительные компоненты».

Подключение к удаленному серверу

С использованием пароля

Синтаксис команды:

  • ssh [имя_пользователя]@[адрес_сервера]

Пример:

  • ssh user@example.com

После выполнения команды вам будет предложено ввести пароль пользователя на удаленном сервере.

Источник: Gcore

С использованием PuTTY (Windows)

  • Запустите PuTTY;
  • В поле «Host Name» введите user@example.com или просто example.com, если имя пользователя совпадает;
  • Нажмите «Open»;
  • В появившемся окне введите имя пользователя и пароль.

Аутентификация с помощью SSH-ключей

Использование ключевой аутентификации повышает безопасность и удобство, устраняя необходимость ввода пароля каждый раз.

Источник: Rushax

Генерация пары ключей

На Linux/macOS:

  • ssh-keygen -t rsa -b 4096 -C «your_email@example.com»

По умолчанию ключи сохранятся в ~/.ssh/id_rsa (приватный) и ~/.ssh/id_rsa.pub (публичный).
ssh-keygen -t rsa -b 4096 -C «your_email@example.com»

Установка публичного ключа на сервер

С помощью ssh-copy-id:

  • ssh-copy-id user@example.com

Это скопирует ваш публичный ключ в файл ~/.ssh/authorized_keys на сервере.

Источник: ExaVault

Ручной метод:

  • Скопируйте содержимое ~/.ssh/id_rsa.pub;
  • Подключитесь к серверу с помощью пароля;
  • Создайте директорию ~/.ssh, если она не существует: mkdir -p ~/.ssh;
  • Добавьте ключ в файл authorized_keys: echo "ваш_публичный_ключ" >> ~/.ssh/authorized_keys;
  • Установите правильные права доступа: chmod 700 ~/.ssh chmod 600~/.ssh/authorized_keys.

Подключение с использованием ключа

Теперь вы можете подключаться без ввода пароля:

  • ssh user@example.com

Дополнительные возможности SSH

Перенаправление портов (SSH-туннелирование)

Локальное перенаправление:

Позволяет перенаправить порт с локальной машины на удаленный сервер.

  • ssh -L локальный_порт:целевой_хост:целевой_порт user@example.com

Пример:

  • ssh -L 8080:localhost:80 user@example.com

Теперь при обращении к localhost:8080 вы фактически подключаетесь к example.com:80.

Источник: Teleport

Удаленное перенаправление

Перенаправляет порт с удаленного сервера на локальную машину.

  • ssh -R удаленный_порт:целевой_хост:целевой_порт user@example.com

Динамическое перенаправление (SOCKS-прокси)

Позволяет создавать SOCKS-прокси через SSH-соединение.

  • ssh -D локальный_порт user@example.com

После этого вы можете настроить свой браузер использовать localhost:локальный_порт в качестве SOCKS5-прокси.

Источник: SOAX

Настройка конфигурационных файлов

Упрощайте подключение, настроив файл ~/.ssh/config.

Пример:

  • Host myserver;
  • HostName example.com;
  • User user;
  • Port 22;
  • IdentityFile ~/.ssh/id_rsa.

Теперь вы можете подключаться командой:

  • ssh myserver

Советы по безопасности

  • Отключите вход по паролю: в файле /etc/ssh/sshd_config на сервере установите PasswordAuthentication no;
  • Измените стандартный порт: измените порт с 22 на другой, чтобы снизить количество автоматических атак;
  • Ограничьте доступ по IP: настройте файрвол, чтобы разрешить подключения только с определенных IP-адресов;
  • Используйте протокол SSH версии 2: убедитесь, что используется более безопасная версия протокола;
  • Регулярно обновляйте OpenSSH: новые версии содержат исправления уязвимостей.

Источник: LayerStack

Распространенные проблемы и их решение

Не удается подключиться к серверу

  • Проверьте доступность сервера: выполните ping example.com.
  • Проверьте порт: убедитесь, что порт SSH открыт и не заблокирован файрволом.

Отказ в доступе (Permission denied)

  • Убедитесь, что правильные права доступа на директории и файлы ~/.ssh.
  • Проверьте правильность настроек аутентификации на сервере.

Источник: MakeUseOf

Неизвестный хост (The authenticity of host can't be established)

Это предупреждение означает, что SSH впервые подключается к этому серверу. Сравните ключ отпечатка с тем, что предоставляет администратор сервера, и введите yes, если они совпадают.

Заглавное фото: Mouser Electronics