[ Пред. ] [ Содержание ] [ След. ]

ssh

[ @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"


Но сперва надо понять, какие настройки будут прописаны.


Вообще их несколько:


Каждый подразумевает разные алгоритмы шифрования, и в некоторых случаях тот или иной формат может быть хорошим решением, а в некоторых большой проблемой, поэтому всегда по-умолчанию выбираем „rsa”.


Емайл при создании нового ключа обязателен. По нему в будущем можно будет идентифицировать ключ.


Personal key предлагается сохранить в файл „∼/.ssh/id_rsa”. Можно поменять место хранения и даже название этого файла.


Public key предлагается сохранить в файл „∼/.ssh/id_rsa.pub” Можно поменять место хранения и название файла.


Passphrase — пароль, кагбэ. Или оставить его пустым, или написать что-то, что не забудется, бо способов восстановления нет. Если что-то написать, то при подключении через этот ключ ВСЕГДА будет происходить запрос «пароля».


Проверить созданный ключ


Для простоты предположим, что новый ключ создан с настройками по-умолчанию в файлы „id_rsa“.


  1. Вывести в консоль содержимое файла с публичным ключом:

cat ∼/.ssh/id_rsa.pub


Обычно это читаемый глазами текст, но бывают исключения.


  1. Вывести в консоль содержимое файла с личным ключом:

cat ∼/.ssh/id_rsa


Содержимое этого файла — машинный код, для глаз нечитаемый (без исключений).


Добавить ssh-ключ в систему


По-умолчанию


Однако это не обязательно. Файлы с ssh-ключами можно называть как угодно и положить куда угодно, например, в „/home/ssh_keys/nas/. Важно только прописать их в системе — эта операция называется «импорт».


Импортировать новый ssh-ключ


Назовём это пропиской или регистрацией нового ключа в ssh-agent.


Импортируют всегда personal key.


Подразумеваем, что ключ был создан с настройками по-умолчанию — в файл ∼/.ssh/id_rsa


  1. Указать путь к personal key

ssh-add ∼/.ssh/id_rsa


  1. Указать 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». Иногда эта становится проблемой после переименования каталога с ключом или после переноса профиля.


  1. chmod 600 /home/ssh_keys/nas/nas_astenix
  2. 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