ssh-agent 在两个虚拟机上运行方式不同

ssh-agent 在两个虚拟机上运行方式不同

我有两台 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执行此操作。

相关内容