Управление ключами SSH с помощью агента

25.07.2018

Теги: BashCLILinuxSSHКлюч

Вводить парольную фразу каждый раз, когда используется ssh не очень удобно. Было бы намного проще ввести ее один раз при входе в систему, сохранить где-нибудь, а затем все время пользоваться. Такую задачу позволяет решить специальная программа — ssh-agent.

Программа ssh-agent хранит секретные ключи и, когда нужно, пользуется ими. Программа (например, ssh), когда ей понадобится воспользоваться секретным ключом, не делает этого сама, а обращается к ssh-агенту, который в свою очередь уже сам пользуется известными только ему данными о секретных ключах. Таким образом, секретные ключи не разглашаются никому, даже программам, принадлежащим самому пользователю.

Программу ssh-agent можно использовать двумя разными способами:

ssh-agent опции
ssh-agent опции команда

В обоих случаях ssh-agent создает файл-сокет с именем /tmp/ssh-XXXXXXXX/agent.ppid, через который осуществляется взаимодействие с агентом. Всем дочерним процессам агент при помощи переменных окружения SSH_AUTH_SOCK (в которой хранится имя файла-сокета) и SSH_AGENT_PID (в которой хранится идентификатор процесс агента) сообщает информацию о том, как с ним можно связаться.

В первом случае агент выдает информацию в виде, удобном для использования командным интерпретатором.

SSH_AUTH_SOCK=/tmp/ssh-XXt4pHNr/agent.5087; export SSH_AUTH_SOCK;
SSH_AGENT_PID=5088; export SSH_AGENT_PID;
echo Agent pid 5088;

При указании ключа -c агент использует синтаксис C Shell. По умолчанию (и при явном указании ключа -s) используется синтаксис Bourne Shell. Эти переменные следует установить в текущем командном интерпретаторе, поэтому обычно вызов ssh-agent комбинируется с командой eval.

$ eval `ssh-agent`
Agent pid 5088

Во втором случае агент экспортирует значения переменных в среду окружения и порождает дочерний процесс, выполняя в нем команду. Достигается аналогичный результат, только при этом порождается дополнительный процесс.

Агент работает до тех пор, пока не будет явно завершен сигналом либо вызовом

$ ssh-agent -k

В последнем случае должна быть доступна переменная SSH_AGENT_PID, которая хранит PID агента. Поэтому команда вызванная не из дочернего процесса, например, из другой консоли, действовать не будет.

После того как агент запущен и выполняется, необходимо сообщить ему информацию о ключах. Программа ssh-add добавляет и удаляет ключи у агента. Кроме того она позволяет блокировать агент, а также устанавливать время действия ключей.

Синтаксис команды ssh-add:

ssh-add опции файл

При вызове без параметров ssh-add сообщает агенту информацию о ключах из файлов identity, id_dsa и id_rsa. При этом программа спрашивает парольную фразу для каждого из ключей (или, если фразы совпадают, всего один раз). Ключ, для которого правильно была введена парольная фраза, передается агенту.

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

Список известных агенту секретных ключей можно посмотреть той же командой ssh-add с ключом командной строки -l. Команда сообщит и отпечаток для каждого ключа.

$ ssh-add -l
1024 ff:28:f1:2c:4c:f8:a0:80:10:f9:00:a1:c9:2d:55:73 user@host (RSA1)
1024 46:88:64:82:a7:f9:aa:ea:3b:21:9e:aa:75:be:35:80 /home/user/.ssh/id_rsa (RSA)
1024 18:dc:76:5d:e0:b0:e8:1a:97:48:45:00:e9:fc:b5:0f /home/user/.ssh/id_dsa (DSA)

Опции командной строки программы ssh-add:

  • -l — Показать список отпечатков известных агенту ключей
  • -L — Показать информацию обо всех открытых ключах, соответствующих секретным ключам, известным ssh-add
  • -d — Удалить ключ у агента
  • -D — Удалить все ключи у агента
  • -x — Заблокировать агента паролем
  • -X — Разблокировать агента

Поиск: Bash • CLI • Linux • SSH • ssh-agent • Ключ

Каталог оборудования
Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.
Производители
Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.
Функциональные группы
Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.