В рамках данного курса вам понадобится доступ к командной строке удалённой машины (сервера). Основной способ доступа - 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: да