我已经在许多较旧的 Ubuntu 安装上配置了 ssh-agent,但是今天,在我的新 Ubuntu 16.04 设置上,我意识到 ssh-add 一直在运行,但我从未配置我的系统来运行 ssh-agent!
编辑:这不只是我没有配置它,它甚至没有运行:
ps aux | grep ssh
root 976 0.0 0.0 65520 5384 ? Ss 16:04 0:00 /usr/sbin/sshd -D
user123+ 6121 0.0 0.0 21292 1016 pts/1 S+ 16:50 0:00 grep --color=auto ssh
ssh-add 在没有 ssh-agent 的情况下如何工作?这是什么魔法?我看到我的系统上有一个 gnome-keyring-daemon 在运行,但是 open-ssh 没有与 gnome 集成,是吗?
答案1
Ubuntu 使用gnome-keyring-daemon
作为 SSH 代理的替代(兼容)实现。
它是通过包安装的gnome-keyring
,并通过 自动启动/etc/xdg/autostart/gnome-keyring-ssh.desktop
。
你可以通过 查看你的 SSH 代理进程sudo lsof $SSH_AUTH_SOCK
。
答案2
环境变量SSH_AGENT_LAUNCHER
扩展到启动的进程ssh-agent
。
在我的 14.04 上,默认情况下,启动后:
% echo "$SSH_AGENT_LAUNCHER"
upstart
在杀死unset
变量并ssh-agent
再次生成之后:
% echo "$SSH_AGENT_LAUNCHER"
## Nothing, not being set
因此,在启动时,init
进程会直接或间接产生ssh-agent
,并且环境变量SSH_AGENT_LAUNCHER
也会相应地设置。