Агент для ключей ssh-agent

Агент для ключей ssh-agent.

Содержание

1 Общая информация

  • Является агентом по умолчанию, включённым в OpenSSH.
  • Вводить парольную фразу каждый раз, когда используется ssh не очень удобно.
  • Удобнее ввести пароль один раз, а затем все время пользоваться.
  • Для этой задачи используется ssh-agent.
  • ssh-agent хранит секретные ключи.

2 Использование

  • ssh-agent создаёт файл-сокет с именем /tmp/ssh-XXXXXXXX/agent.ppid, через который осуществляется взаимодействие с агентом.
  • Всем дочерним процессам агент при помощи переменных окружения SSH_AUTH_SOCK (имя файла-сокета) и SSH_AGENT_PID (идентификатор процесс агента) сообщает информацию о том, как с ним можно связаться.
  • Чтобы использовать эти переменные, запустите через eval:
    eval $(ssh-agent)
    
  • Программа ssh-add добавляет и удаляет ключи у агента:
    ssh-add options file
    
  • После того как агент запущен и выполняется, необходимо сообщить ему информацию о ключах, например:
    ssh-add ~/.ssh/id_ed25519
    
  • При вызове без параметров ssh-add сообщает агенту информацию о ключах из файлов identity, id_dsa и id_rsa.
  • При этом программа спрашивает парольную фразу для каждого из ключей.
  • Ключ, для которого правильно была введена парольная фраза передаётся агенту.
  • Если в качестве аргумента командной строки указан файл, программа сообщает агенту информацию только о том ключе, который находится в файле.
  • Список известных агенту секретных ключей:
    ssh-add -l
    
  • Опции командной строки программы ssh-add:
    • -l : показать список отпечатков известных агенту ключей;
    • -L : показать информацию обо всех открытых ключах, соответствующих секретным ключам, известным ssh-add;
    • -d : удалить ключ у агента;
    • -D : удалить все ключи у агента;
    • -x : заблокировать агента паролем;
    • -X : разблокировать агента.
  • Чтобы запустить агент автоматически и убедиться, что только один ssh-agent процесс выполняется одновременно, добавьте следующее в ~/.bashrc:
    if ! pgrep -u "$USER" ssh-agent > /dev/null; then
        ssh-agent -t 1h > "$XDG_RUNTIME_DIR/ssh-agent.env"
    fi
    if [[ ! -f "$SSH_AUTH_SOCK" ]]; then
        source "$XDG_RUNTIME_DIR/ssh-agent.env" >/dev/null
    fi
    

Дмитрий Сергеевич Кулябов
Дмитрий Сергеевич Кулябов
Профессор кафедры теории вероятностей и кибербезопасности

Мои научные интересы включают физику, администрирование Unix и сетей.

Похожие