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 密钥文章拱门维基可能有帮助。上述方法非常有效,所以我从来没有任何理由去寻找替代方法。

希望这可以对您有所帮助。

相关内容