openssh - 入力時にエージェントにキーを追加する

openssh - 入力時にエージェントにキーを追加する

たとえば、 でパスワードを入力するたびにgitsshそのパスワードを記憶させたいです。

だから私は設定したssh-agent

私も追加しましAddKeysToAgent yes~/.ssh/config

今実行すればssh-addすべて問題ありません。しかし、それがなければ動作しません(毎回パスワードを入力する必要があります)

init スクリプトに追加できることはわかっていますssh-addが、毎日必要ではないので、それは望んでいません。それが何のAddKeysToAgent yesためのものかと思いましたが?

私はssh-agentsystemd サービスとして起動します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-agent 部分ssh-keys の記事アーチウィキ役に立つかもしれません。上記の方法は非常にうまくいったので、代替方法を探す必要はありませんでした。

これがお役に立てば幸いです。

関連情報