每当我输入密码时,例如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 密钥文章于拱门维基可能有帮助。上述方法非常有效,所以我从来没有任何理由去寻找替代方法。
希望这可以对您有所帮助。