我想使用一个密钥环应用程序来存储我的 ssh 密钥的密码。此外,当我连接到会话时应该询问一次,然后将其存储。
目前我使用ssh-agent
并keyring
在我的.zshrc
# ssh-agent
if ! pgrep -u "$USER" ssh-agent > /dev/null; then
ssh-agent -t 1h > "$XDG_RUNTIME_DIR/ssh-agent.env"
fi
if [[ ! "$SSH_AUTH_SOCK" ]]; then
source "$XDG_RUNTIME_DIR/ssh-agent.env" >/dev/null
fi
eval `keychain --eval --quiet --agents ssh superGoodKey`
eval $(keychain --eval --quiet ~/.ssh/id_rsa)
每次重新启动后,当我打开终端时,我需要输入密码,然后将其保存到会话中。
但更喜欢当我想使用 ssh 密钥登录时询问一次然后保存。而不是当我打开终端时被询问。类似于没有图形 GUI 的 gnome-keyring。
答案1
安装pam_ssh
PAM 模块。想法相似,但它处理只是SSH 代理 – 没有中间密钥环,也没有任何通用密码存储功能。相反,您的登录密码将直接用作 SSH 密钥密码,以加载~/.ssh/id_rsa
您输入的任何密钥~/.ssh/session-keys.d/*
。
pam_ssh 模块将自动在所有会话中维护 ssh-agent 的单个实例。
(请注意,在 Debian 上安装 pam_ssh 还会产生激活 pam_namespace 的副作用,这会为每个用户提供唯一的 /tmp 实例 - 这可能会导致一些混乱。)
然而,在没有图形 UI 的情况下仍然可以使用 GNOME Keyring – 该pam_gnome_keyring
模块不限于由 GDM 使用;它也可以针对基于文本的登录激活。 (尽管需要使用稍微不同的选项来调用它,以立即初始化密钥环守护程序,而不是等待 GNOME 稍后执行。)