我有两台 openSUSE 13.1 VM。两台虚拟机都已设置为在 KDE 加载时运行 ssh-agent 和 ssh-add。这是通过.bash_profile
使用以下代码的文件完成的:
# Load SSH agent
SSH_DIR="${HOME}/.ssh"
SSH_ENV="${SSH_DIR}/environment"
function start_agent {
echo "Initialising new SSH agent..."
/usr/bin/ssh-agent | sed 's/^echo/#echo/' > "${SSH_ENV}"
echo succeeded
chmod 600 "${SSH_ENV}"
. "${SSH_ENV}" > /dev/null
for key in ${SSH_DIR}/{id_rsa}
do
ssh-add ${key}
done
}
# Source SSH settings, if applicable
if [ -f "${SSH_ENV}" ]; then
. "${SSH_ENV}" > /dev/null
#ps ${SSH_AGENT_PID} doesn't work under cywgin
ps -ef | grep ${SSH_AGENT_PID} | grep ssh-agent$ > /dev/null || {
start_agent;
}
else
start_agent;
fi
这在其中一个虚拟机上有效。KDE 启动时(但在完全加载之前),系统提示我输入 SSH 密钥的密码。正在运行ps
仅表示 的一个实例ssh-agent
。
但是,在另一台虚拟机上,它不起作用。我一定是不假思索地更改了某些内容,因为它曾经起作用。我根本没有收到输入 SSH 密钥密码的提示。但是,正在运行ps
指示几个正在ssh-agent
运行的实例,并且似乎来自不同的启动点:
1231 ? S 0:00 /usr/bin/dbus-launch --sh-syntax --close-stderr --exit-with-session /usr/bin/ssh-agent /etc/X11/xinit/xinitrc
1233 ? Ss 0:00 /usr/bin/ssh-agent /etc/X11/xinit/xinitrc
我猜是因为 ssh-agent 已经在运行,所以通过文件尝试的实例.bash_profile
失败了。我知道如果我echo ${SSH_ENV}
在它运行的系统上执行,我会得到/home/msnyder/.ssh/environment
。在不工作的虚拟机上执行相同操作不会返回任何结果。
过去,我会通过 KDE Autostart 目录运行 ssh-askpass。但我选择了一种更面向 shell 的方法,这就是我现在正在做(并试图做)的事情。
我不知道是什么导致了这种差异。.bash_profile
条目是相同的。有人知道吗?
编辑:kdm
似乎正在启动ssh-agent
。但我不明白为什么。
root 751 0.0 0.0 24612 308 ? Ss 16:42 0:00 /usr/bin/kdm
root 784 1.7 10.7 282468 110040 tty7 Ssl+ 16:42 0:29 \_ /usr/bin/Xorg -br :0 vt7 -nolisten tcp -auth /var/lib/kdm/AuthFiles/A:0-eGk8Rb
root 1086 0.0 0.0 78344 556 ? S 16:42 0:00 \_ -:0
msnyder 1110 0.0 0.0 13092 304 ? Ss 16:42 0:00 \_ /bin/sh /usr/bin/startkde
msnyder 1233 0.0 0.0 12564 76 ? Ss 16:42 0:00 \_ /usr/bin/ssh-agent /etc/X11/xinit/xinitrc
据我所知,我还没有配置KDE
/kdm
执行此操作。