Открыть сервисСервис

Подключение по SSH

Подключение по SSH — установка зашифрованного удалённого доступа к компьютеру или серверу с использованием протокола Secure Shell (SSH). Протокол обеспечивает аутентификацию, конфиденциальность и целостность данных при работе с командной оболочкой, передаче файлов и пробросе портов. SSH заменил устаревшие небезопасные утилиты telnet, rlogin и rsh и стал стандартом де-факто для администрирования удалённых Unix-подобных систем, включая серверы под управлением Linux.

Принцип работы

SSH работает по модели клиент-сервер. Сервер (sshd) слушает порт по умолчанию 22/tcp и обрабатывает входящие соединения. Клиент (ssh) устанавливает TCP-соединение, согласовывает алгоритмы шифрования и обмена ключами, выполняет аутентификацию пользователя и после успешного входа открывает каналы для команд, файлового трафика или проброса портов.

Протокол поддерживает три уровня защиты: шифрование канала (AES, ChaCha20 и другие), аутентификация сервера по открытым ключам (чтобы клиент мог проверить подлинность сервера) и аутентификация пользователя — по паролю или по ключу.

Предварительные требования

Для подключения необходимо:

  1. Установленный SSH-сервер на целевой машине. В Debian/Ubuntu пакет называется openssh-server, в RHEL/CentOS/Fedora — openssh-server, в Arch Linux — openssh. Проверка статуса: systemctl status sshd.
  2. Клиент на управляющей машине. В большинстве дистрибутивов Linux и macOS утилита ssh предустановлена. В Windows начиная с Windows 10 доступен встроенный OpenSSH-клиент (ssh.exe в System32), также распространён клиент PuTTY.
  3. Сетевая доступность: порт 22 должен быть открыт файрволом (ufw, firewalld, iptables) и не блокироваться провайдером или облачным хостингом (security groups в AWS, Яндекс.Облако, Selectel и т. д.).

Аутентификация

По паролю

Самый простой способ: при подключении сервер запрашивает пароль пользователя учётной записи. Пароль передаётся по зашифрованному каналу, но уязвим к перебору при слабом пароле, поэтому во многих системах по умолчанию запрещён вход root по паролю и отключён парольный вход для служебных учёток.

По SSH-ключу

Более надёжный метод. Пользователь генерирует пару ключей:

`` ssh-keygen -t ed25519 -C "user@host" ``

Закрытый ключ (~/.ssh/id_ed25519) остаётся на клиенте, открытый (id_ed25519.pub) копируется на сервер командой:

`` ssh-copy-id user@server ``

или вручную добавляется в файл ~/.ssh/authorized_keys на сервере. После этого подключение выполняется без запроса пароля.

Основные команды подключения

Базовый синтаксис:

`` ssh user@hostname ``

Примеры:

КомандаНазначение
ssh user@192.168.1.10Подключение к серверу по IP
ssh -p 2222 user@hostПодключение к нестандартному порту
ssh -i ~/.ssh/key user@hostИспользование конкретного ключа
ssh -L 8080:localhost:80 user@hostПроброс локального порта 8080 на 80 сервера (туннель)
ssh -R 9000:localhost:3000 user@hostОбратный туннель: порт 9000 сервера на локальный 3000
ssh -D 1080 user@hostSOCKS-прокси через сервер

Для автоматизации и переиспользования настроек в файле ~/.ssh/config задаются имена хостов:

`` Host myserver HostName 203.0.113.5 User admin Port 2222 IdentityFile ~/.ssh/id_ed25519 ``

После этого достаточно выполнить ssh myserver.

Передача файлов

Для копирования файлов поверх SSH используются утилиты scp (синтаксис как у cp) и rsync (с поддержкой дельта-компрессии и возобновления):

`` scp file.txt user@host:/remote/path rsync -avz ./dir/ user@host:/remote/dir/ ``

Более современная альтернатива — SFTP (SSH File Transfer Protocol), работающая поверх того же SSH-соединения: sftp user@host.

Настройка сервера

Основной конфигурационный файл — /etc/ssh/sshd_config. Частые правки:

  • Port 2222 — смена порта (снижает нагрузку от автоматических сканеров);
  • PermitRootLogin no — запрет входа под root;
  • PasswordAuthentication no — отключение парольной аутентификации;
  • AllowUsers admin deploy — список разрешённых пользователей.

После изменений сервис перезапускается: systemctl restart sshd.

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

Для защиты от перебора паролей применяют Fail2ban, ограничивают список разрешённых IP, используют только ключевую аутентификацию, двухфакторную аутентификацию через PAM (Google Authenticator, YubiKey) и мониторят журнал /var/log/auth.log. Закрытые ключи хранят с правами 600 и защищают паролем при генерации.

Источники

  • Руководство OpenSSH: man-страницы ssh(1), sshd(8), ssh_config(5)
  • Проект OpenBSD OpenSSH: официальная документация
  • Книга «UNIX и Linux: системное администрирование», E. Nemeth и др.
  • RFC 4251–4254 — спецификации протокола SSH
Заметили ошибку или не согласны с информацией в статье? Напишите нам support@bfometr.ru