Управление ключами SSH с помощью агента
Материал из Xgu.ru
- Автор: Игорь Чубин
- Короткий URL: ssh-agent
На этой странице описывается что такое ssh-agent, зачем он нужен и как правильно его использовать.
Вводить парольную фразу каждый раз, когда используется ssh не очень удобно. Было бы намного проще ввести ее один раз при входе в систему, сохранить где-нибудь, а затем все время пользоваться. Такую задачу позволяет решить специальная программа — ssh-agent.
ssh-agent хранит секретные ключи и, когда нужно, пользуется ими. Программа (например, ssh), когда ей понадобится воспользоваться секретным ключом, не делает этого сама, а обращается к ssh-agent 'у, который в свою очередь уже сам пользуется известными только ему данными о секретных ключах. Таким образом, секретные ключи не разглашаются никому, даже программам принадлежащим самому пользователю.
Программу 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 в системе X Window, нужно добавить строку |
Агент работает до тех пор, пока не будет явно завершен сигналом либо вызовом
%$ ssh-agent -k
В последнем случае должна быть доступна переменная SSH_AGENT_PID, которая хранит PID агента. Поэтому команда вызванная не из дочернего процесса, например, из другой консоли, действовать не будет.
После того как агент запущен и выполняется, необходимо сообщить ему информацию о ключах. Программа ssh-add добавляет и удаляет ключи у агента. Кроме того она позволяет блокировать агент, а также устанавливать время действия ключей.
Синтаксис команды ssh-add:
- %$ ssh-add options file
При вызове без параметров 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 -- Разблокировать агента
[править] Дополнительная информация
- SSH and ssh-agent (англ.)
- SSHKeychain для Mac OS X (англ.)
- ssh-agent on Mac OS X 10.5 (Leopard) (англ.)
- Интеграция KWallet и ssh-agent для хранения паролей (рус.)
[править] Материалы по SSH на xgu.ru
- SSH — основная страница
- Host-based аутентификация в OpenSSH — беспарольная аутентификация пользователей одного хоста на другом
- SFTP — протокол и программы для копирования файлов поверх SSH
- Хранение открытых ключей SSH в DNS
- Управление ключами SSH с помощью агента
- ssh-copy-id — программа для инсталляции открытых ключей на другой хост