Как зайти на удалённый сервер по SSH? Что такое authorized_keys?

SSH — защищённый протокол удалённого доступа к серверу. Для входа используют команду ssh user@host; файл ~/.ssh/authorized_keys на сервере содержит публичные ключи, которым разрешена аутентификация для конкретного пользователя.
Подробный ответ

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

Для подключения указывают имя пользователя и IP-адрес либо доменное имя сервера.

ssh alex@203.0.113.10
ssh alex@example.com
ssh -p 2222 alex@example.com

Флаг -p нужен, если SSH-сервер слушает порт, отличный от стандартного 22.

Аутентификация по ключу

SSH-ключи состоят из приватной и публичной части. Приватный ключ остаётся на компьютере пользователя, а публичный ключ добавляют на сервер. При подключении сервер проверяет, может ли клиент подтвердить владение приватным ключом.

ssh-keygen -t ed25519 -C "alex@example.com"
ssh-copy-id alex@example.com
ssh -i ~/.ssh/id_ed25519 alex@example.com

Что такое authorized_keys

Файл ~/.ssh/authorized_keys находится на сервере в домашней директории пользователя. Каждая строка обычно содержит один разрешённый публичный SSH-ключ. Если соответствующий приватный ключ есть у клиента, SSH-сервер может разрешить вход.

cat ~/.ssh/authorized_keys
mkdir -p ~/.ssh
chmod 700 ~/.ssh
chmod 600 ~/.ssh/authorized_keys

Ручное добавление ключа

cat ~/.ssh/id_ed25519.pub | ssh alex@example.com "mkdir -p ~/.ssh && cat >> ~/.ssh/authorized_keys"

SSH config

Для удобства можно сохранить параметры подключения в ~/.ssh/config.

Host production
  HostName 203.0.113.10
  User deploy
  IdentityFile ~/.ssh/id_ed25519
  Port 22

После этого подключение выполняется короткой командой ssh production.

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

Приватный ключ нельзя передавать другим людям или добавлять в Git. На production-серверах обычно используют ключи вместо паролей, ограничивают SSH-доступ firewall-правилами и отключают прямой вход root по SSH при отсутствии необходимости.

Как ответить на собеседовании

На сервер подключаюсь командой ssh user@host. Для key-based authentication генерирую пару ключей, оставляю приватный ключ локально, а публичный добавляю на сервер в ~/.ssh/authorized_keys. Проверяю права: обычно .ssh имеет режим 700, а authorized_keys — 600.

Оцени свой прогресс

Честно оцени своё понимание этого вопроса, чтобы мы могли построить твой учебный трек максимально эффективно.
Читать в блоге