我正在尝试设置 GNOME-Keyring,以便在登录后解锁时,它还允许我使用已加密的 SSH 密钥。
这是 Debian 12 系统。所讨论的密钥是 ed25519 SSH 密钥,位于 下.ssh/id_ed25519
。我使用的是 i3。完全相同的设置在相同设置下可以正常工作。
登录后系统提示我输入密钥环密码,其他服务(如 Nextcloud)只有在输入正确密码的情况下才有效,因此我认为解锁过程运行正常。Seahorse(GNOME 密钥环 GUI)列出了密钥,因此 GNOME 密钥环知道该密钥。
GCR ssh-agent 包装器的状态:
systemctl status --user gcr-ssh-agent.socket
● gcr-ssh-agent.socket - GCR ssh-agent wrapper
Loaded: loaded (/usr/lib/systemd/user/gcr-ssh-agent.socket; enabled; preset: enabled)
Active: active (running) since Sat 2024-03-23 16:17:15 CET; 1h 22min ago
Triggers: ● gcr-ssh-agent.service
Listen: /run/user/1000/gcr/ssh (Stream)
CGroup: /user.slice/user-1000.slice/[email protected]/app.slice/gcr-ssh-agent.socket
环境变量设置正确,并且文件存在:
> echo $SSH_AUTH_SOCK
/run/user/1000/gcr/ssh
> file $SSH_AUTH_SOCK
/run/user/1000/gcr/ssh: socket
ssh-add -l
列出具有正确名称和类型的密钥。
然而,当我输入时ssh my-other-computer
,系统会提示我输入该密钥的密码。
我错过了什么?提前感谢有关如何进一步调试的任何想法!
编辑:运行 ssh 后-vvv
显示:
debug2: get_agent_identities: ssh_agent_bind_hostkey: communication with agent failed
debug1: get_agent_identities: ssh_fetch_identitylist: communication with agent failed
请注意,这是一个连接到另一个 Debian 系统的 Debian 系统(没有 Windows,不是 PowerShell 问题)。
答案1
问题似乎是 Debian 12 使用了旧版本的 gnome-keyring,/run/user/1000/gcr/ssh
其中不是要使用的套接字。
相反,Arch Wiki 中的以下旧文章对我有帮助:https://wiki.archlinux.org/index.php?title=GNOME/Keyring&oldid=800764#gnome-keyring-daemon_%22ssh%22_componentoldid
(请注意URL 中的参数)。
它描述了应该使用的套接字/run/user/1000/keyring/ssh
。为了使该套接字可用,gnome-keyring-daemon.service
必须编辑 systemd 用户服务以使其具有components=pkcs11,secrets,ssh
(请注意添加的ssh
)。我还在 systemd 中启用了该服务:systemctl --user enable gnome-keyring-daemon.service
重启后,该文件就在那里。
请注意,这很可能仅适用于 Debian 12,在我的情况下是 gnome-keyring 版本 42.1。