SSH

Secure Shell · RFC 4251 · 1995

Что это

SSH (Secure Shell) — протокол защищённого удалённого доступа. Придуман Тату Юлёненом (Финляндия) в 1995 после того как в Хельсинкском ТУ случился сниффер-атака на пароли. Стандартный порт — 22/tcp.

Версии

Три подпротокола

  1. Transport Layer — handshake, обмен ключами (Diffie-Hellman, ECDH, X25519), шифры (AES-GCM, ChaCha20-Poly1305), MAC
  2. Authentication — пароль, публичный ключ, GSSAPI, keyboard-interactive
  3. 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.

Полезные фичи

Имплементации

В РФ

SSH массово не блокируется — порт 22 нужен всем разработчикам, админам, хостерам. Иногда провайдеры мобильного интернета блокируют исходящий 22 (защита от сканеров), тогда сервер можно повесить на 443 или другой порт. Fingerprinting SSH-хэндшейка на ТСПУ теоретически возможен, но на практике не применяется массово.

Обфускация

Если 22 порт заблокирован — SSH умеет через: