情况:
对于公钥认证,我使用 Keepass2 和插件 KeeAgent。Keepass2/KeeAgent 中的配置正确,密钥对已生成,公钥已复制到服务器。Keepass2 已启动,私钥已加载到其中。
因此,如果我登录远程服务器,系统会提示我输入密码。
基本:
操作系统:
lsb_release -a
No LSB modules are available.
Distributor ID: Ubuntu
Description: Ubuntu 22.04.1 LTS
Release: 22.04
Codename: jammy
ssh 包:
sudo apt list | grep ssh
WARNING: apt does not have a stable CLI interface. Use with caution in scripts.
...
openssh-client-ssh1/jammy 1:7.5p1-13 amd64
openssh-client/jammy,now 1:8.9p1-3 amd64 [installiert]
openssh-known-hosts/jammy,jammy 0.6.2-1.1 all
openssh-server/jammy,now 1:8.9p1-3 amd64 [installiert]
openssh-sftp-server/jammy,now 1:8.9p1-3 amd64 [Installiert,automatisch]
openssh-tests/jammy 1:8.9p1-3 amd64
...
窗口管理器:
我用lxde
问题:
此功能一直有效,直到我从 focal (20.04 LTS) 更新到 jammy (22.04 LTS)
11月10日更新
从今天(2022 年 11 月 10 日)开始,使用 *.iso-image 新安装的 jammy 出现了同样的问题。
分析结果:
根本原因是缺少环境变量 SSH_AUTH_SOCK。
(请参阅https://github.com/dlech/KeeAgent/issues/372)
环境变量必须在整个系统范围内可见。
例如,在 bash 环境中设置它,使其仅在此会话中可见。
使用 Ubuntu(标准)作为窗口管理器设置 SSH_AUTH_SOCK,就像使用 gpg 和密钥环一样,但不是像 /tmp/ssh-XXXXXXXX 那样
在焦点中我看到以下内容(启动并登录窗口管理器后):
env | grep SSH
SSH_AUTH_SOCK=/tmp/ssh-0mFzle55uRgI/agent.1862
SSH_AGENT_PID=1990
和
ps ax | grep ssh
1990 ? Ss 0:00 /usr/bin/ssh-agent /usr/bin/im-launch /usr/bin/startlxde
2038 ? Ss 0:00 /usr/bin/ssh-agent -s
在 jammy 中我看到:
env | grep SSH
<nothing>
和
ps ax | grep ssh
1006 ? Ss 0:00 sshd: /usr/sbin/sshd -D [listener] 0 of 10-100 startups
8557 ? Ss 0:00 /usr/bin/ssh-agent -s
解决方案?:
我认为系统启动时发生了一些变化,尤其是在 lxde 启动时。