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 服務的替代方法,您可以將以下程式碼新增至 shell 啟動腳本(例如 ~/.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 密鑰文章拱門維基可能有幫助。上述方法非常有效,所以我從來沒有任何理由去尋找替代方法。

希望這可以對您有所幫助。

相關內容