[ @ssh @console ]
Secure shell (SSH) — наш основной способ коннекта на удалённый компьютер в консоли.
В современных дистрибутивах этот сервис называется „OpenSSH”, и как правило, он установлен и не активен, поэтому всё начинается с проверки его статуса и запуска при необходимости. Но начнём с установки, бо это основа.
Установить OpenSSH
Проверить статус сервиса SSH
sudo systemctl status ssh.service
Проверить готовность ssh-agent
eval `ssh-agent -s`
Пример ожидаемого ответа:
Agent pid 82671
Создать новый ssh-ключ
Выполнить:
ssh-keygen -t rsa -C "user@email"
Но сперва надо понять, какие настройки будут прописаны.
- user@email — почта владельца ключа. Можно использовать белиберду, но лучше реальный адрес.
- rsa — тип шифрования для нового ключа.
- rsa
- dsa
- ecdsa
- ecdsa-sk
- ed25519
- ed25519-sk
Каждый подразумевает разные алгоритмы шифрования, и в некоторых случаях тот или иной формат может быть хорошим решением, а в некоторых большой проблемой, поэтому всегда по-умолчанию выбираем „rsa”.
Емайл при создании нового ключа обязателен. По нему в будущем можно будет идентифицировать ключ.
Personal key предлагается сохранить в файл „∼/.ssh/id_rsa”. Можно поменять место хранения и даже название этого файла.
Public key предлагается сохранить в файл „∼/.ssh/id_rsa.pub” Можно поменять место хранения и название файла.
Passphrase — пароль, кагбэ. Или оставить его пустым, или написать что-то, что не забудется, бо способов восстановления нет. Если что-то написать, то при подключении через этот ключ ВСЕГДА будет происходить запрос «пароля».
Проверить созданный ключ
Для простоты предположим, что новый ключ создан с настройками по-умолчанию в файлы „id_rsa“.
- Вывести в консоль содержимое файла с публичным ключом:
cat ∼/.ssh/id_rsa.pub
Обычно это читаемый глазами текст, но бывают исключения.
- Вывести в консоль содержимое файла с личным ключом:
cat ∼/.ssh/id_rsa
Содержимое этого файла — машинный код, для глаз нечитаемый (без исключений).
Добавить ssh-ключ в систему
По-умолчанию
- каталог для всех ключей — „~/.ssh”
- файл с новым ssh-ключом называется „id_rsa”.
Однако это не обязательно. Файлы с ssh-ключами можно называть как угодно и положить куда угодно, например, в „/home/ssh_keys/nas/”. Важно только прописать их в системе — эта операция называется «импорт».
Импортировать новый ssh-ключ
Назовём это пропиской или регистрацией нового ключа в ssh-agent.
Импортируют всегда personal key.
Подразумеваем, что ключ был создан с настройками по-умолчанию — в файл ∼/.ssh/id_rsa
- Указать путь к personal key
ssh-add ∼/.ssh/id_rsa
- Указать Passphrase ключа, если таковой был задействован.
Ожидаемый ответ:
Identity added [и путь к добавленному ключу]
Этот же public key можно добавлять для аутентификации на другие ресурсы, например, на GitHub:
https://docs.github.com/en/authentication/connecting-to-github-with-ssh/adding-a-new-ssh-key-to-your-github-account
Проверить импорт ключа
Возможно, потребуется сперва перейти в режим работы с ssh в отдельном процессе:
ssh-agent /bin/sh
Запросить список зарегистрированных в системе ключей в кратком формате (его всегда достаточно):
ssh-add -l
Пример ответа:
«3072 SHA256:YyaZeTckxJHbwiuew98098yeikgjw7f/Sbdw+LJFejbfke user_email (RSA)»
то же самое в расширенном формате
ssh-add -L
Если ssh-ключей в системе нет, ответ будет «The agent has no identities».
Импортировать ssh-ключ из нестандартного места хранения ключей
В этом примере будет импортирован уже давно существующий ключ из файла с названием «nas_astenix» (без расширения), который находится в каталоге „/home/ssh_keys/nas/”
В том же каталоге находится и файл с публичным ключом «nas_astenix.pub», но импортируют всегда приватные ключи.
Установить файлу с приватным ключом права «только на чтение»
Иначе в импорте ключа будет отказано с причиной «Permissions are too open». Иногда эта становится проблемой после переименования каталога с ключом или после переноса профиля.
- chmod 600 /home/ssh_keys/nas/nas_astenix
- ssh-add /home/ssh_keys/nas/nas_astenix
Ждём сообщение:
Identity added: /home/astenix/ssh_keys/nas/nas_astenix (емайл_ключа)
Если ответом будет “Could not open a connection to your authentication agent”, следует принудительно перейти в режим работы с ssh в отдельном процессе (новое окно с консолью):
ssh-agent /bin/sh
И уже в этом shell выполнить импорт приватного ключа в систему:
ssh-add /home/ssh_keys/nas/nas_astenix
Done.
Удаление ssh-ключей из системы
Убедиться в том, что ssh-agent запущен
ssh -V
Пример ответа:
OpenSSH_9.2p1 Debian-2+deb12u1, OpenSSL 3.0.11 19 Sep 2023
ps -auxc | grep ssh-agent
Пример положительного ответа:
astenix 1053 0.0 0.0 7664 1860 ? Ss 03:04 0:00 ssh-agent
Если ответ отрицательный, то агент запускается так:
eval $(ssh-agent)
Проверить зарегистрированные в системе ключи
ssh-add -l
Если нужно нет, то и удалять нечего.
Удалить определенный ключ
Указать полный путь к public key, который надо удалить (импортируются и удаляются всегда публичные ключи):
ssh-add -d /полныйПутьДоКаталогаСКлючами/полноеНазваниеФайлаСКлючом.pub
Удалить все ключи
Если злой и неосторожный:
ssh-add -D