SSH
Secure Shell · RFC 4251 · 1995
Что это
SSH (Secure Shell) — протокол защищённого удалённого доступа. Придуман Тату Юлёненом (Финляндия) в 1995 после того как в Хельсинкском ТУ случился сниффер-атака на пароли. Стандартный порт — 22/tcp.
Версии
- SSH-1 (1995) — оригинал, у Юлёнена. Позже нашли уязвимости в MAC-конструкции. Устарел, использовать нельзя
- SSH-2 (2006, RFC 4251) — переработанная версия, актуальная
Три подпротокола
- Transport Layer — handshake, обмен ключами (Diffie-Hellman, ECDH, X25519), шифры (AES-GCM, ChaCha20-Poly1305), MAC
- Authentication — пароль, публичный ключ, GSSAPI, keyboard-interactive
- Connection — мультиплексирование: shell, exec, port-forward, X11, SCP/SFTP
Аутентификация ключами
# сгенерировать ключ
ssh-keygen -t ed25519 -C "you@example.com"
# положить публичную часть на сервер
ssh-copy-id user@server
# теперь без пароля
ssh user@server
Алгоритмы ключей: RSA (устарел с ≤2048 бит), Ed25519 (рекомендуется), ECDSA (популярен, но менее безопасен). Пароли отключай через PasswordAuthentication no в /etc/ssh/sshd_config.
Полезные фичи
- Local forward —
ssh -L 8080:localhost:80 server - Remote forward —
ssh -R 9090:localhost:80 server - Dynamic (SOCKS5) —
ssh -D 1080 server - SCP / SFTP — копирование файлов
- ProxyJump —
ssh -J bastion internal - Multiplexing —
ControlMasterдля повторного использования соединения
Имплементации
- OpenSSH — доминирующая, входит в Linux/macOS/Windows 10+
- Dropbear — минимальная, для embedded (роутеры, OpenWrt)
- PuTTY — Windows-клиент, до сих пор актуален
- libssh, libssh2 — библиотеки для встраивания
В РФ
SSH массово не блокируется — порт 22 нужен всем разработчикам, админам, хостерам. Иногда провайдеры мобильного интернета блокируют исходящий 22 (защита от сканеров), тогда сервер можно повесить на 443 или другой порт. Fingerprinting SSH-хэндшейка на ТСПУ теоретически возможен, но на практике не применяется массово.
Обфускация
Если 22 порт заблокирован — SSH умеет через: