Аутентификация по ключам в SSH
#### Вариант 1 Когда клиент ssh посылает запрос вида ``` ssh admin@10.247.1.1 ``` Сначала сам клиент проверяет ключи **текущего пользователя** (того, из-под кого запущен `ssh`). Если подходящих ключ
Вариант 1
Когда клиент ssh посылает запрос вида
ssh admin@10.247.1.1
Сначала сам клиент проверяет ключи текущего пользователя (того, из-под кого запущен ssh). Если подходящих ключей нет и разрешена аутентификация по паролю, клиент переходит к запросу пароля для пользователя admin на сервере.
Вариант 2
Если же мы заходим из под другого пользователя то ключ пользователя через которого будет проходить соединение не будет доступен для текущего. Для решения этой задачи можно сделать следующее:
sudo ssh admin@10.247.1.1
Но это плохая практика и так лучше не делать.
Как правильно?
-
Вариант 1 : либо использовать свой собственный ключ и добавить его в
authorized_keysна сервере. То есть содержимое файла/home/admin/.ssh/id_ed25519.pubзаписать на сервер в файл/home/admin/.ssh/authorized_keys. В файлеauthorized_keysможет быть несколько ключей (одна строка - один ключ).
В openssh есть команда которая автоматизирует добавление публичного ключей на сервер. Но это плохой способ если нужно разослать 1000 ключей)
ssh-copy-id -i ~/.ssh/id_ed25519.pub admin@10.247.1.1
-
Вариант 2: Использовать
ssh-agentи добавить нужный ключ (если у вас есть к нему доступ) командойssh-add /путь/к/ключу. В этом случае дальше не будет нужды пользоватьсяsudoили заходить из под пользователяadmin.
sudo ssh-add /home/admin/.ssh/id_ed25519
Команда sudo ssh-add /home/admin/.ssh/id_ed25519 добавляет указанный приватный ключ в SSH-агент (программу, которая хранит расшифрованные ключи в памяти и автоматически предоставляет их при подключении). Требует проверки. Есть шанс что это не сработает от пользователя root. Так как агенты разных пользователей могут быть изолированы. Самый правильный путь думается 3й)
Полезные команды для проверки
-
ssh-add -l— показать список ключей, загруженных в агента (с отпечатками). -
ssh-add -L— показать сами публичные ключи, доступные агенту. -
Если ключ не добавился, можно запустить агента вручную:
eval $(ssh-agent)и затем добавить ключ. -
Вариант 3: Скопировать ключ себе (если это ваш ключ)
Если ключ создавался для вас то наиболее правильным будет скопировать его себе для личного пользования:
- Создайте свою папку .ssh, если её нет
mkdir -p ~/.ssh
chmod 700 ~/.ssh
- Скопируйте ключи
sudo cp /home/admin/.ssh/id* ~/.ssh/
- Сделайте себя владельцем
sudo chown -R $(whoami):$(whoami) ~/.ssh/
- Установите правильные права
chmod 700 ~/.ssh/
chmod 600 ~/.ssh/id_ed25519
chmod 644 ~/.ssh/id_ed25519.pub # публичный ключ может быть чуть более открытым
- Добавьте ключ в агента
ssh-add ~/.ssh/id_ed25519