我的电脑上设置了 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
,而不是每次登录后都需要。