Руководство: Создание SSH ключа

В рамках данного курса вам понадобится доступ к командной строке удалённой машины (сервера). Основной способ доступа - Secure Shell (SSH).

Помимо этого мы будем использовать этот протокол для передачи данных и инкапсуляции трафика.

Особенностями SSH является наличие шифрования и аутентификации. Последняя может быть разной, но две самых популярных опции - по ключу и по паролю. В курсе вы будете пользоваться аутентификацией по ключу. Далее очень кратко рассмотрим работу с ключами, а более подробную информацию можно найти в статье Archlinux Wiki

Ключ не имеет силы самостоятельно, а приобретает её оказавшись в паре. Пара состоит из приватного и публичного ключей. Однако удобнее думать о них не как о паре ключей, а как о замке́ и ключе от него.

Рассмотрим на примере - создадим новую пару ключей (замените Petrov.VD на свои инициалы, 123 на номер группы):

Сейчас на вопрос программы Enter passphrase (empty for no passphrase): отвечаем нажатием на Enter. Дважды.

ssh-keygen -t ed25519 -f ~/.ssh/cnt -C "Petrov.VD@123"

, где

  • -t ed25519 - указывает тип используемого ключа (другие варианты можно рассмотреть дома за кружечкой чая)
  • -f ~/.ssh/cnt - указывает опорное имя файла для генерируемых ключей (cnt - computer network technologies)
  • -C Petrov.VD@123 - комментарий, указываемый в публичном ключе (замке́) (не забудь заменить)

В результате этой команды в папке ~/.ssh появятся 2 файла:

  • ~/.ssh/cnt - приватный ключ, т.е. истинный ключ (храним при себе, никому не отдаём)
  • ~/.ssh/cnt.pub - публичный ключ, т.е. замо́к (отправляем его, пусть им закрывают)

Рассмотрим приватный ключ:

-----BEGIN OPENSSH PRIVATE KEY-----
b3BlbnNzaC1rZXktdjEAAAAABG5vbmUAAAAEbm9uZQAAAAAAAAABAAAAMwAAAAtzc2gtZW
QyNTUxOQAAACB+EuUyT8pyWejToiloix2wdmE12kjZPV4A14G7wD3S5gAAAJCD9KJ6g/Si
egAAAAtzc2gtZWQyNTUxOQAAACB+EuUyT8pyWejToiloix2wdmE12kjZPV4A14G7wD3S5g
AAAEB/gbUJXU50h2ni8ulfmmk2Ae/C6wMcba4xACD4hV0DjH4S5TJPynJZ6NOiKWiLHbB2
YTXaSNk9XgDXgbvAPdLmAAAADVZELlBldHJvdiAyMDM=
-----END OPENSSH PRIVATE KEY-----

Открывающие, закрывающие теги и символы, в которые закодирован ключ. Идентифицировать ключ вам позволяет название файла.

Рассмотрим публичный ключ (замо́к):

ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIH4S5TJPynJZ6NOiKWiLHbB2YTXaSNk9XgDXgbvAPdLm Petrov.VD@123

Он состоит из трёх частей

тип-ключа сам-ключ комментарий

Первые два поля нужны для работы протокола, а третье помогает понять администратору “закрываемого” узла, чей это публичный ключ (замо́к).

Это вызвано тем, что каждый приватный ключ вы храните в отдельном файле, а публичные ключи (замки́) на “закрываемом” узле обычно хранятся все в одной файле (часто ~/.ssh/authorized_keys). Никаких общих требований к формату комментария нет. По умолчанию это username@hostname, того пользователя и узла, на которых ключ создавался, но в нашем курсе для удобства преподавательского состава это Surname.NP@GroupNumber, т.е. ФИО и номер группы.

На этом этапе замо́к (публичный ключ, .pub) можно отправлять преподавателю.

Дополнительная информация

Можно ли использовать публичный ключ для доступа больше чем на одно устройство.

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

Однако не стоит иметь всего один ключ на всё-всё-всё. Рекомендуем думать о разделение устройств с точки зрения компрометации приватного ключа - если злоумышленник украл ваш личный ключ, это не должно дать ему доступ к хотам, доступным вам по рабочим причинам. И наоборот.

Можно ли использовать приватный ключ больше чем на одном устройстве.

Да. В рамках данного курса рекомендуем скопировать приватный ключ на все устройства, на которых вы планируете выполнять лабораторные. Правилом хорошего тона является offline копирование или же в контролируемой сети (например, домашней). Тем не менее в реально жизни делать так не рекомендуется. TODO: описать кейс утери устройства

Файл конфигурации

TODO: описать использование файла конфигурации

Кого защищает Pass Phrase

TODO: да

SSH агент

TODO: да

Troubleshooting

TODO: описать фикс прав и почему он вообще нужен