У меня есть две виртуальные машины openSUSE 13.1. Оба были настроены для запуска ssh-agent и ssh-add при загрузке KDE. Это делается с помощью файла .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
. То же самое на виртуальной машине, которая не работает, ничего не возвращает.
В прошлом я запускал ssh-askpass через каталог автозапуска KDE. Однако я выбрал более ориентированный на оболочку метод, отсюда и то, что я делаю (и пытаюсь сделать) сейчас.
Я не знаю, что вызывает эту разницу. Записи .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
для этого.