Подключение по SSH¶
Подключение по SSH — установка зашифрованного удалённого доступа к компьютеру или серверу с использованием протокола Secure Shell (SSH). Протокол обеспечивает аутентификацию, конфиденциальность и целостность данных при работе с командной оболочкой, передаче файлов и пробросе портов. SSH заменил устаревшие небезопасные утилиты telnet, rlogin и rsh и стал стандартом де-факто для администрирования удалённых Unix-подобных систем, включая серверы под управлением Linux.
¶Принцип работы
SSH работает по модели клиент-сервер. Сервер (sshd) слушает порт по умолчанию 22/tcp и обрабатывает входящие соединения. Клиент (ssh) устанавливает TCP-соединение, согласовывает алгоритмы шифрования и обмена ключами, выполняет аутентификацию пользователя и после успешного входа открывает каналы для команд, файлового трафика или проброса портов.
Протокол поддерживает три уровня защиты: шифрование канала (AES, ChaCha20 и другие), аутентификация сервера по открытым ключам (чтобы клиент мог проверить подлинность сервера) и аутентификация пользователя — по паролю или по ключу.
¶Предварительные требования
Для подключения необходимо:
- Установленный SSH-сервер на целевой машине. В Debian/Ubuntu пакет называется
openssh-server, в RHEL/CentOS/Fedora —openssh-server, в Arch Linux —openssh. Проверка статуса:systemctl status sshd. - Клиент на управляющей машине. В большинстве дистрибутивов Linux и macOS утилита
sshпредустановлена. В Windows начиная с Windows 10 доступен встроенный OpenSSH-клиент (ssh.exeв System32), также распространён клиент PuTTY. - Сетевая доступность: порт 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@host | SOCKS-прокси через сервер |
Для автоматизации и переиспользования настроек в файле ~/.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
