Intereting Posts
Что делает unset? Как можно выполнить обновление в реальном времени во время работы программы? Сравните два файла с awk и условием Является ли поведение AWK END, чтобы последняя строка загружалась в $ 0 на странице руководства? Разрешить пользователю использовать sudo для выполнения чего-либо, только один исполняемый файл как nopassword Отправка самого последнего созданного файла по электронной почте Nautilus: Как сортируются файлы? Странное поведение «sh -c» при прохождении через ssh Как перезапустить apache как non-root (используя git-hook)? vsftpd полный анонимный доступ Как настроить шрифты на удаленном X-соединении (XDMCP против ssh)? Регулярное выражение с использованием \\ vs с использованием \ Совместите тачпад правильно в xorg.conf на Dell XPS 15 Как получить текст между двумя словами, указанными их индексами? xmllint отображает значение второго атрибута, если первый соответствует

Можно ли работать с XTERM и Gnome-keyring?

Когда я подключаюсь к ssh с приложением gnome-terminal, открывается диалог gnome-keyring, поэтому я вводил пароль только один раз за сеанс, и я могу повторно подключиться к одному и тому же ssh более одного раза, не спрашивая пароль.

Но это не работает в xterm. Может быть, кто-то может помочь сделать эту работу?

Вы используете xterm внутри своей сессии Gnome?

Попробуйте это в терминале Gnome:

echo $SSH_AUTH_SOCK 

Затем попробуйте то же самое в xterm.

Он должен печатать что-то вроде

 /tmp/keyring-abc123/ssh 

в обоих.

Я предполагаю, что это не печатает что-то подобное в xterm.

Если он пуст, что-то его очищает (или не устанавливает).

Если выглядит больше

 /tmp/ssh-defgh67890/agent 

то вы также запускаете ssh-agent где-то, что будет запутывать.

Вот что я хотел бы попробовать:

Запустите echo $0 в обоих. Есть ли у вас - в начале, а другой нет?

Если это так, вы, вероятно, запускаете ssh-agent в оболочках входа, но не в недействительные оболочки. Посмотрите в своих ~/.bashrc или ~/.bash_profile или эквивалентных сценариях и устраните проблему.

Или измените, запускается ли xterm в качестве оболочки входа:

  1. используя xterm*loginShell: true или xterm*loginShell: false в ваших ~/.Xdefaults или ~/.xresources ?
  2. запустив xterm -ls или xterm (без -ls )

Скопируйте настройки, которые у вас есть для терминала Gnome, в разделе «Параметры профиля» -> «Название и команда-> выполнить команду» в качестве оболочки входа.

Если это не удается, попробуйте добавить в свои файлы запуска инструкции echo . Вам необходимо перенаправить вывод в файл журнала, используя echo $SSH_AUTH_SOCK >> ~/ssh-debug.log или аналогичный.

Затем выйдите из системы и вернитесь, и посмотрите на свой ~/ssh-debug.log .

Затем запустите терминал Gnome и посмотрите на него снова.

Затем запустите xterm и посмотрите и посмотрите на него снова.

Ищите различия.

Посмотрите /etc/pam.d/gdm и System-> Preferences-> Startup Applications. У вас есть какая-либо другая конфигурация ssh-agent в любом месте /etc/pam.d?

Посмотрите /etc/X11/Xsession и скрипты, которые он вызывает.

Вы также можете взглянуть на обходной путь, указанный в Red Hat Bugzilla – Bug 713955 – переменная среды SSH_AUTH_SOCK, отсутствующая в терминалах, запущенных с помощью сочетания клавиш , добавив это к вашему ~/.bashrc :

 #GPG and SSH agent not exported when running terminal by shortcut if [ -z "$GPG_AGENT_INFO" -a -z "$SSH_AUTH_SOCK" -a -n "$GNOME_KEYRING_CONTROL" ] ; then #derive GPG and SSH agent info from GNOME_KEYRING_CONTROL export GPG_AGENT_INFO="$GNOME_KEYRING_CONTROL/gpg:0:1" export SSH_AUTH_SOCK="$GNOME_KEYRING_CONTROL/ssh" fi 

В моем случае (Centos 6 с gnome 2.28) переменная GNOME_KEYRING_CONTROL не существует (но GNOME_KEYRING_SOCKET делает), а gnome keyring «seahorse», похоже, не предоставляет GPG_AGENT_INFO.

Итак, я закончил с этой версией (также размещенной в ~/.bashrc ):

 set_keyring_agent() { # SSH agent not exported when running terminal by shortcut # see https://bugzilla.redhat.com/show_bug.cgi?id=713955#c4 # and http://unix.stackexchange.com/questions/11355/its-possible-to-make-xterm-and-gnome-keyring-work-together if [[ -n "${GNOME_KEYRING_SOCKET}" && -z "${SSH_AUTH_SOCK}" ]] ; then #derive SSH agent info from GNOME_KEYRING_SOCKET local ssh_auth_socket="${GNOME_KEYRING_SOCKET}.ssh" if [[ -S "${ssh_auth_socket}" ]] ; then export SSH_AUTH_SOCK="${ssh_auth_socket}" fi fi } set_keyring_agent 

Хотя я не понял, какая магия делает gnome-terminal получить правильный SSH_AUTH_SOCK из gnome-keyring-daemon, я нашел обходное решение, чтобы установить правильное значение в XTerm (или других терминалах). Добавьте в свой .bashrc следующее:

 SSH_AUTH_SOCK=`netstat -xl | grep -o '/tmp/keyring-.*/ssh$'` [ -z "$SSH_AUTH_SOCK" ] || export SSH_AUTH_SOCK 

Что это значит: он ищет локальный слуховой сокет, который имеет имя, соответствующее шаблону «/ tmp / keyring – * / ssh», и устанавливает значение SSH_AUTH_SOCK для этого, если оно присутствует.

Источник: http://ubuntuforums.org/showthread.php?p=10786874#post10786874