尽管有 gcr-ssh-agent,ssh 仍会提示输入密码

尽管有 gcr-ssh-agent,ssh 仍会提示输入密码

我正在尝试设置 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。

相关内容