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

Всё взаимодействие происходит по зашифрованному каналу, т.е. злоумышленники не могут разобрать эти данные после перехвата.

Существует множество реализаций серверов и клиентов для данного протокола. Под GNU/Linux наиболее распространена реализация OpenSSH. Под Windows распространённым клиентом является PuTTY.

По умолчанию сервер работает на порту 22.

Конфигурационный файл сервера находится `/etc/ssh/sshd

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

Ввиду того, что пароль является слабой защитой, рекомендуется для серверов, смотрящих в интернет, использовать аутентификацию по ключу. Для её работы необходимо

  • Создать свой собственный уникальный ключ.
  • Зарегистрировать ключ на сервере.
  • Отключить авторизацию по паролю.

Плюсы авторизации по ключу:

  • Очень стойкая к перебору. Длина ключа - 2048 бит, а длина среднестатистического пароля - 8 символов, что может дотянуть до 30 бит.
  • При авторизации по ключу вы можете не вводить пароль.
  • Ключ можно переносить с собой с компьютера на компьютер, упрощая жизнь по настройке каждой машины.

Как сделать это?

Создание ключа

ssh-keygen позволяет создать пару ключей: приватную и публичную часть. Публичная чать позволяет проверить приватную часть. Т.е. SSH использует асиметричное шифрование.

id_rsa - приватный ключ id_rsa.pub - публичный ключ

Регистрирация ключа

“Регистрация” ключа происходит для каждой учётной записи на сервере. Для её выполнения необходимо публичую часть ключа поместить в AuthorizedKeysFile. По умолчанию это ~/.ssh/authorized_keys.

  • Можно физически скопировать файл (буфер обмена, scp, sftp, wget….)
  • А можно воспользоваться специализированной утилиой, ssh-copy-id.

Отключение пароля

  • Исправить настройки SSH-сервера, PasswordAuthentication no.
  • Перезапустить SSH-сервер, systemctl restart openssh-server

Игра

  1. Скопировать приватный ключ с компьютера 12 из-под учётной записи student, файл ~/.ssh/id_rsa на локальный компьютер ~/12-private-key
  2. Используя этот ключ, подключиться к 24 серверу, ssh -i ~/12-private-key user@….

Закрытый сервер

Настройте СВОЙ playground таким образом, чтобы к нему мог подключиться только лишь пользователь user с использованием ключа, который защищён паролём.

  • Создать ключ (новый), который защищён паролём. KeyPassword
  • Скопировать ключ к себе в playground и поместить его в authorized_kes
  • Удостовериться, что аутентификация по ключу проходит
  • Перенастроить сервер, чтобы он принимал только подключения по ключу.

А если я не хочу вводить пароль от ключа?

Для решения этой задачи есть ssh agent. Он позволяет хранить в себе ключи уже расшифрованные, чтобы пользователь не указывал пароль к ключам каждый раз, когда это необходимо. Т.е. его задача - временное хранение для облегчения жизни пользователя. Хорошоей аналогией будет временное разрешение на использование sudo в течение 5 минут.

Для добавления ключа в ssh agent необходимо выполнить команду ssh-add ПУТЬ К КЛЮЧУ.