Технологически при создании нового ssh-ключа будут созданы два файла, которые и называются «ключами»:
- личный (private)
- публичный (public)
Свой публичный ssh-ключ можно использовать на нескольких серверах и на GitHub одновременно, главное — сохранять в секрете приватный ключ, вероятно даже на флэшке, вероятно даже на флэшке, которая постоянно хранится внутри себя.
По-умолчанию
- каталог для всех ключей — „~/.ssh”
- файл с новым ssh-ключом называется „id_rsa”.
Однако это не обязательно. Файлы с ssh-ключами можно называть как угодно и положить куда угодно, например, в „/home/ssh_keys/nas/”. Важно только прописать их в системе — эта операция называется «импорт».
Создать новый ssh-ключ
В терминале зайти в каталог, в котором будет храниться новый ключ.
Выполнить:
ssh-keygen -t rsa -C ”ЕМАЙЛ”
Как это читать
- Алгоритм шифрования
Выбран rsa
Их несколько:
- rsa
- dsa
- ecdsa
- ecdsa-sk
- ed25519
- ed25519-sk
Каждый подразумевает разные алгоритмы шифрования, и в некоторых случаях тот или иной формат может быть хорошим решением, а в некоторых большой проблемой, поэтому всегда по-умолчанию выбираем „rsa”.
- Емайл
при создании нового ключа обязателен. Можно указать и несуществующий, но лучше рабочий. По емайлу в будущем можно будет идентифицировать ключ.
- Personal key
предлагается сохранить в файл „∼/.ssh/id_rsa”. Можно поменять место хранения и даже название этого файла.
- Public key
предлагается сохранить в файл „∼/.ssh/id_rsa.pub” Можно поменять место хранения и название файла.
- Passphrase
Пароль, кагбэ, очень произвольного формата. Вот это подойдёт полностью:
Можно оставить его пустым.
Если задать пароль, то такой, который будет удобно набирать и не забудется, бо способов восстановления нет.
Если пароль для ключа задан, то при каждом подключении через данный ключ ВСЕГДА будет происходить запрос «пароля». В каких-то случаях это повышает безопасность, в других раздражает.
В будущем passphrase для существующих ключей можно изменять/обновлять. Но его невозможно восстановить в случае утери, придётся создать новый ключ.
- Comment
Когда ключей больше, чем один, есть смысл прописывать к ним внятные камменты при их создании.
Проверить созданный ключ
Для простоты предположим, что новый ключ создан с настройками по-умолчанию в файлы „id_rsa“.
- Вывести в консоль содержимое файла с публичным ключом:
cat ∼/.ssh/id_rsa.pub
Обычно это читаемый глазами текст, но бывают исключения.
- Вывести в консоль содержимое файла с личным ключом:
cat ∼/.ssh/id_rsa
Содержимое этого файла — машинный код, для глаз нечитаемый (без исключений).
Импортировать новый ssh-ключ в систему
Назовём это пропиской или регистрацией нового ключа в ssh-agent.
- Сперва надо убедиться в том, что сервис ssh-agent запущен:
eval `ssh-agent -s`
Пример ожидаемого ответа:
Agent pid 82671
- Поменять права на доступ к файлу с приватным ключом
chmod 700 ПОЛНЫЙ_ПУТЬ_К_ФАЙЛУ/ФАЙЛ_С_ПРИВАТНЫМ_КЛЮЧОМ
Иначе будет ошибка:
@ WARNING: UNPROTECTED PRIVATE KEY FILE! @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
Permissions 0640 for 'ПОЛНЫЙ_ПУТЬ_К_ФАЙЛУ/id_rsa' are too open.
It is required that your private key files are NOT accessible by others.
This private key will be ignored.
- Импортировать ключ в систему
- Указать путь к personal key
ssh-add ПОЛНЫЙ_ПУТЬ_К_ФАЙЛУ/ФАЙЛ_С_ПРИВАТНЫМ_КЛЮЧОМ
- Указать Passphrase ключа, если таковой был задействован.
Этот public key можно добавлять для аутентификации на другие ресурсы, например, в/на GitHub:
https://docs.github.com/en/authentication/connecting-to-github-with-ssh/adding-a-new-ssh-key-to-your-github-account
Проверить импорт ключа
Возможно (НЕ ФАКТ, но в Manjaro таки да), потребуется сперва перейти в режим работы с ssh в отдельном процессе:
ssh-agent /bin/sh
- Запросить список зарегистрированных в системе ключей в кратком формате (его всегда достаточно):
ssh-add -l
Пример ожидаемого ответа:
Если ssh-ключей в системе нет, ответ будет «The agent has no identities». Возможно, надо полностью перезагрузить сервер.
Next step: Подключиться к NAS по ssh