懒惰提示输入 ssh 公钥密码

懒惰提示输入 ssh 公钥密码

我的电脑上设置了 ssh 公钥。它们有密码。每当我需要时,例如推送到 github,我都必须输入密码。每次都是这样。而且我希望 ssh 在后续访问时能记住。

ssh-agent/keychain 似乎刚好符合要求,只是当我登录时(当我不确定是否需要使用 ssh 密钥时)它们会打扰我输入密码,而不是在我尝试使用 ssh 时。

这些工具或其他工具中是否有一些功能可以记住 ssh 密码,但也许在我为 ssh 输入密码时而不是在会话打开时抓取它?

不久前我以某种方式在 Fedora 16 盒子上实现了这个功能,但我不记得我做了什么。

答案1

以下是我用于解决 ssh shell 这个问题的方法。我为 ssh 命令设置了别名,首先检查密钥是否已加载,如果没有,则先加载它们,然后执行 ssh 命令:

alias ssh='[[ `ssh-add -l` == "The agent has no identities." ]] && ssh-add; ssh'

我把它放在我的 .alias 中并从 .bashrc 中获取它

答案2

这是 GNOME Keyring 内部 SSH 代理的默认行为。

将这些模块添加到 PAM 配置的相应部分/etc/pam.d/system-login(或者,对于 GDM,gdm-password)。

auth       optional   pam_gnome_keyring.so only_if=login,gdm-password

session    optional   pam_gnome_keyring.so only_if=login,gdm-password auto_start

如果您使用 GNOME(从 XDG Autostart 启动密钥环守护程序),这应该足够了。如果您使用任何其他环境,请将其添加到您的.xinitrc(对于 startx)或.xprofile(对于 gdm/lxdm/kdm):

if [ "$GNOME_KEYRING_CONTROL" ]; then
    eval $(gnome-keyring-daemon --start)
fi

答案3

如果您运行 ssh-agent 但没有为其提供密钥,则可以稍后在第一次需要密钥时运行 ssh-add。

答案4

使用gpg-agent。除了 PGP 密钥之外,它还可以处理 SSH 密钥,仅在您需要时才询问一次密码并将其用于pinentry输入。

将其添加到~/.xinitrc~/.xprofile

eval $(gpg-agent --enable-ssh-support --daemon)

注销/登录后,您需要发出ssh-add请求来gpg-agent处理您的 SSH 密钥。这仅在您第一次使用时才需要gpg-agent,而不是每次登录后都需要。

相关内容