每當我輸入密碼時,例如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 密鑰文章於拱門維基可能有幫助。上述方法非常有效,所以我從來沒有任何理由去尋找替代方法。
希望這可以對您有所幫助。