Я провел некоторое время, играя с разнообразными минималистическими аудиоплеерами и сегодня нахожу меня особенно неравнодушным к относительно недавнему xmms21, потомок (несколько) почтенного xmms аудиоплеера.
Это - устойчивое клиент-серверное приложение, разработанное, чтобы работать полнофункциональный из командной строки или от нескольких графических клиентов, играть практически любую музыку, кодирующую доступный, справиться с музыкальными коллекциями при приведении в рабочее состояние как можно меньше процессорного времени.
Вы выполняете xterm из своей сессии Gnome также?
Попробуйте это в Терминале Gnome:
echo $SSH_AUTH_SOCK
Затем попробуйте то же в xterm.
Это должно распечатать что-то как
/tmp/keyring-abc123/ssh
в обоих.
Я предполагаю, что это не печатает что-то как этот в xterm.
Если это пусто, что-то очищает его (или не устанавливает его).
Если взгляды больше как
/tmp/ssh-defgh67890/agent
затем Вы также выполняете ssh-агент куда-нибудь, который станет сбивающим с толку.
Вот то, что я попробовал бы:
Выполненный echo $0
в обоих. Делает каждый имеет -
в запуске и другом нет?
Если так, Вы, вероятно, выполняете ssh-агент в оболочках входа в систему, но не оболочках невхода в систему. Взгляните в Вашем ~/.bashrc
или ~/.bash_profile
или эквивалентные сценарии и решают проблему.
Или изменение, запускается ли xterm как оболочка входа в систему:
xterm*loginShell: true
или xterm*loginShell: false
в Вашем ~/.Xdefaults
или ~/.xresources
?xterm -ls
или xterm
(без -ls
)Скопируйте установку, Вы имеете для Терминала Gnome под Предпочтениями Профиля-> Заголовок и Команда-> Команда выполнения как оболочка входа в систему.
Если это перестало работать, попытайтесь добавить echo
операторы в Ваших файлах запуска. Необходимо будет перенаправить вывод к использованию файла журнала echo $SSH_AUTH_SOCK >> ~/ssh-debug.log
или подобный.
Затем выйдите из системы и въезжайте задним ходом и взгляните на Ваш ~/ssh-debug.log
.
Затем выполненный Терминал Gnome и взгляд на него снова.
Затем выполненный xterm и взгляд и взгляд на него снова.
Ищите различия.
Взгляните на/etc/pam.d/gdm и Систему-> Предпочтения-> Приложения Запуска. У Вас есть какая-либо другая конфигурация ssh-агента где-нибудь в/etc/pam.d?
Посмотрите /etc/X11/Xsession
и сценарии, которые это называет.
В то время как я не выяснял, какое волшебство заставляет терминал гнома получить корректный SSH_AUTH_SOCK от гнома-демона брелока для ключей, я нашел, что обходное решение установило правильное значение в 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
Вы также можете посмотреть обходной путь, указанный в Red Hat Bugzilla - Ошибка 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 "морской конек" похоже, не предоставляет 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
echo $SSH_AUTH_SOCK
в xterm я имею:/tmp/ssh-mIDzpMya1902/agent.1902
. В терминале гнома:/tmp/keyring-F5L0Fh/ssh
. Если я установилexport SSH_AUTH_SOCK=/tmp/keyring-F5L0Fh/ssh
затем xterm работает с брелоком для ключей гнома. Что я должен сделать для устанавливания этого значения в xterm (это значение должно совпасть с в терминале гнома, но каждом новом окне терминала это значение изменения)? – 15.04.2011, 16:22~/.bashrc
и~/.bash_profile
запускаться с и видеть, содержат ли ониssh-agent
. В противном случае посмотрите на/etc/pam.d
и/etc/X11/Xsession
. – Mikel 16.04.2011, 01:21