Соединение X11 использует другой протокол аутентификации при использовании ssh -X
2876
jolivier
Я не могу использовать X-приложения на одном из моих серверов. (Тот же клиент успешно подключается к другим серверам, поэтому проблема не на стороне клиента).
Я соединяюсь с ssh -vvv -Y -4 jet(пробовал также с, -Xвместо того -Y, чтобы, та же самая проблема), чтобы заставить IPv4 (который решает уже предыдущую ошибку). Но когда я запускаю приложение, требующее XI, получаю следующее:
debug1: client_input_channel_open: ctype x11 rchan 3 win 65536 max 16384 debug1: client_request_x11: request from 127.0.0.1 42026 debug2: fd 7 setting O_NONBLOCK debug3: fd 7 is O_NONBLOCK debug1: channel 1: new [x11] debug1: confirm x11 debug2: X11 connection uses different authentication protocol. X11 connection rejected because of wrong authentication. debug2: X11 rejected 1 i0/o0 debug2: channel 1: read failed debug2: channel 1: close_read debug2: channel 1: input open -> drain debug2: channel 1: ibuf empty debug2: channel 1: send eof debug2: channel 1: input drain -> closed debug2: channel 1: write failed debug2: channel 1: close_write debug2: channel 1: output open -> closed debug2: X11 closed 1 i3/o3 debug2: channel 1: send close debug2: channel 1: rcvd close debug2: channel 1: is dead debug2: channel 1: garbage collecting debug1: channel 1: free: x11, nchannels 2 debug3: channel 1: status: The following connections are open: #0 client-session (t4 r0 i0/0 o0/0 fd 4/5 cc -1) #1 x11 (t7 r3 i3/0 o3/0 fd 7/7 cc -1) xterm Xt error: Can't open display: JET:10.0
Из различных решений, найденных в Интернете, было что-то вроде
xauth generate $DISPLAY MIT-MAGIC-COOKIE-1
но когда я запускаю эту команду, я получаю ту же ошибку, что и при запуске программы X (даже если я rm ~/.Xauthorityтолько что).
Я не sudo suted после ssh, я аутентифицируюсь через закрытый ключ. Мой сервер находится в CentOs, и у меня есть следующая конфигурация сервера sshsudo cat /etc/ssh/sshd_config|egrep -v "^#"
Причина, по которой пересылка ssh X не работала, заключалась в том, что у меня есть /etc/ssh/sshrcфайл конфигурации.
Конец sshd(8)страницы руководства гласит:
Если ~ / .ssh / rc существует, запускает его; иначе, если / etc / ssh / sshrc существует, запускает его; в противном случае работает Xauth
Поэтому я добавляю следующие команды /etc/ssh/sshrc(также со страницы руководства sshd) на стороне сервера:
# example sshrc file if read proto cookie && [ -n "$DISPLAY" ]; then if [ `echo $DISPLAY | cut -c1-10` = 'localhost:' ]; then # X11UseLocalhost=yes echo add unix:`echo $DISPLAY | cut -c11-` $proto $cookie else # X11UseLocalhost=no echo add $DISPLAY $proto $cookie fi | xauth -q - fi
И это работает!
Примечание: отредактировано, чтобы сделать два набора обратных галочек более понятными в примере sshrc. Будьте осторожны при копировании!
1
Anthony DiSanti
Я просто делаю снимок в темноте, но поскольку у вас проблемы с xauth, возможно, это связано с надежной пересылкой X11. Вы пытались сделать те же шаги с помощью подключения через SSH ssh -vvv -X -4 jet?
да я пробовал оба -X и -Y, одинаковые ошибки в обоих случаях
jolivier 12 лет назад
0