openssh - добавить ключи к агенту при вводе

openssh - добавить ключи к агенту при вводе

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

Итак, я настроилssh-agent

Я также добавил AddKeysToAgent yesк~/.ssh/config

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

Я знаю, что я мог бы добавить ssh-addв скрипт инициализации, но это не то, что я хочу, так как мне это не нужно каждый день. Я думал, что AddKeysToAgent yesдля этого и есть?

Я запускаю ssh-agentкак службу systemd с SSH_AUTH_SOCK=$XDG_RUNTIME_DIR/ssh-agent.socket.

обновлять

Для тестирования я удалил службу и SSH_AUTH_SOCK. Перезагрузился и запустил, eval $(ssh-agent)затем вошел в систему, ssh pi@my-ipввел пароль и сделал это снова. Все еще запрашивается пароль. Так что это, похоже, не проблема с systemd.

обновление 2

Перемещение AddKeysToAgent yesк первой строке исправило проблему с помощью eval.

решение1

хорошо, проблема была в формате ~/.ssh/config. Это было

Host awesomehost.tld
    User user
    IdentityFile ~/.ssh/id_rsa
AddKeysToAgent yes

Это должно быть либо

Host awesomehost.tld
    User user
    IdentityFile ~/.ssh/id_rsa
Host *
    AddKeysToAgent yes

или

AddKeysToAgent yes
Host awesomehost.tld
    User user
    IdentityFile ~/.ssh/id_rsa

решение2

В качестве альтернативы запуску службы systemd вы потенциально можете добавить следующий код в скрипт запуска оболочки (например, ~/.bashrc):

if ! pgrep -u "$USER" ssh-agent > /dev/null; then
    ssh-agent > "$XDG_RUNTIME_DIR/ssh-agent.env"
fi
if [[ ! "$SSH_AUTH_SOCK" ]]; then
    eval "$(<"$XDG_RUNTIME_DIR/ssh-agent.env")"
fi

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

Надеюсь, это будет вам полезно.

Связанный контент