SSH Ключи
Как работают ключи SSH?
SSH сервер может выполнять аутентификацию пользователей с помощью различных алгоритмов. Самый популярный - это аутентификация по паролю. Он достаточно прост, но не очень безопасный. Пароли передаются по безопасному каналу, но они недостаточно сложны для противостояния попыткам перебора. Вычислительная мощность современных систем в сочетании со специальными скриптами делают перебор очень простым. Конечно, существуют другие способы дополнительной безопасности, но аутентификация по ключу SSH более надежна.
Каждая пара ключей состоит из открытого и закрытого ключа. Секретный ключ сохраняется на стороне клиента и не должен быть доступен кому-либо еще. Утечка ключа позволит злоумышленнику войти на сервер, если не была настроена дополнительная аутентификация по паролю.
Открытый ключ используется для шифрования сообщений, которые можно расшифровать только закрытым ключом. Это свойство и используется для аутентификации с помощью пары ключей. Открытый ключ загружается на удаленный сервер, к которому необходимо получить доступ. Его нужно добавить в специальный файл ~/.ssh/authorized_keys.
Когда клиент попытается выполнить проверку подлинности через этот ключ, сервер отправит сообщение, зашифрованное с помощью открытого ключа, если клиент сможет его расшифровать и вернуть правильный ответ - аутентификация пройдена.
Как создать ключи SSH?
Сначала необходимо создать ключи ssh для аутентификации на локальном сервере. Для этого существует специальная утилита ssh-keygen, которая входит в набор утилит OpenSSH. По умолчанию она создает пару 2048 битных RSA ключей, которая подойдет не только для SSH, но и для большинства других ситуаций.
Генерация ключей ssh выполняется командой:
ssh-keygen
Опции:
- -t: тип RSA;
- -b: длина ключа в битах (по-умолчанию 3072 для RSA);
- -f: путь к файлу ключа (по-умолчанию будет ~/.ssh/id_rsa);
- -C: комментарий к ключу (по-умолчанию будет username@hostname);
- -P: пароль для доступа к ключу.
Утилита предложит вам выбрать расположение ключей. По умолчанию ключи располагаются в папке ~/.ssh/. Лучше ничего не менять, чтобы все работало по умолчанию и ключи автоматически подхватывались. Секретный ключ будет называться id_rsa, а публичный id_rsa.pub.
ssh-keygen
Generating public/private rsa key pair.
Enter file in which to save the key (/home/user/.ssh/id_rsa):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /home/user/.ssh/id_rsa
Your public key has been saved in /home/user/.ssh/id_rsa.pub
The key fingerprint is:
SHA256:Pp8zFwyetQDoJ5x0qx29sIe1cbZQlOEPeBU8wmZOqv8 username@hostname
The key's randomart image is:
+---[RSA 3072]----+
| . oo+o. |
| o o oO.o |
| + o +.B+. .|
| = = O.=o |
| =SO & o. |
| ..= * = |
| oo . |
| o+.. |
| o=E |
+----[SHA256]-----+
Затем утилита предложит ввести пароль для дополнительного шифрования ключа на диске. Его можно не указывать, если не хотите. Использование дополнительного шифрования имеет только один минус - необходимость вводить пароль, и несколько преимуществ:
- Пароль никогда не попадет в сеть, он используется только на локальной машине для расшифровки ключа. Это значит что перебор по паролю больше невозможен;
- Секретный ключ хранится в закрытом каталоге и у клиента ssh нет к нему доступа пока вы не введете пароль;
- Если злоумышленник хочет взломать аутентификацию по ключу SSH, ему понадобится доступ к вашей системе. И даже тогда ключевая фраза может стать серьезной помехой на его пути.
Но все же, это необязательное дополнение и если не хотите, то вы можете просто нажать Enter. Тогда доступ по ключу ssh будет выполняться автоматически и вам не нужно будет что-либо вводить.
Сменить пароль на ключ можно с помощью команды ssh-keygen -p.
Теперь у вас есть открытый и закрытый ключи SSH и вы можете использовать их для проверки подлинности.
Включение режима отладки в SSH
Опция -v клиента ssh позволяет запускать ssh в подробном режиме, который выводит отладочную информацию о ходе соединения SSH, что действительно полезно для отладки соединений, аутентификации и любых проблем с конфигурацией. Есть разные уровни этого режима. Использование нескольких флагов -v увеличивает этот уровень (максимальный уровень - 3). С увеличением уровня, выводится более подробная информация о подключении (сообщения debug2 и debug3).
Следующая команда запустит SSH на первом уровне детализации, что дает нам много отладочной информации.
При попытке выйти из сеанса вы также увидите сообщения отладки.