Невдача переадресації X11 лише на одному сервері


1

У мене є два комп’ютери: PC1 і PC2. Обидва мають однакову установку Debian Wheezy з останніми оновленнями. Установка на PC2 була взята з PC1 за допомогою tar. Єдині відмінності між PC1 та PC2 - це записи grub, ім'я хоста, вміст /etc/hostsта IP-адреса. Конфігурація SSHD обох комп'ютерів однакова:

# Package generated configuration file
# See the sshd_config(5) manpage for details

# What ports, IPs and protocols we listen for
Port 22
# Use these options to restrict which interfaces/protocols sshd will bind to
#ListenAddress ::
#ListenAddress 0.0.0.0
Protocol 2
# HostKeys for protocol version 2
HostKey /etc/ssh/ssh_host_rsa_key
HostKey /etc/ssh/ssh_host_dsa_key
HostKey /etc/ssh/ssh_host_ecdsa_key
#Privilege Separation is turned on for security
UsePrivilegeSeparation yes

#AddressFamily inet

# Lifetime and size of ephemeral version 1 server key
KeyRegenerationInterval 3600
ServerKeyBits 768

# Logging
SyslogFacility AUTH
LogLevel INFO

# Authentication:
LoginGraceTime 120
PermitRootLogin yes
StrictModes yes

RSAAuthentication yes
PubkeyAuthentication yes
#AuthorizedKeysFile     %h/.ssh/authorized_keys

# Don't read the user's ~/.rhosts and ~/.shosts files
IgnoreRhosts yes
# For this to work you will also need host keys in /etc/ssh_known_hosts                                                                                                             
RhostsRSAAuthentication no                                                                                                                                                          
# similar for protocol version 2                                                                                                                                                    
HostbasedAuthentication no                                                                                                                                                          
# Uncomment if you don't trust ~/.ssh/known_hosts for RhostsRSAAuthentication                                                                                                       
#IgnoreUserKnownHosts yes                                                                                                                                                           

# To enable empty passwords, change to yes (NOT RECOMMENDED)                                                                                                                        
PermitEmptyPasswords no                                                                                                                                                             

# Change to yes to enable challenge-response passwords (beware issues with                                                                                                          
# some PAM modules and threads)                                                                                                                                                     
ChallengeResponseAuthentication no

# Change to no to disable tunnelled clear text passwords
#PasswordAuthentication yes

# Kerberos options
#KerberosAuthentication no
#KerberosGetAFSToken no
#KerberosOrLocalPasswd yes
#KerberosTicketCleanup yes

# GSSAPI options
#GSSAPIAuthentication no
#GSSAPICleanupCredentials yes

X11Forwarding yes
X11DisplayOffset 10
X11UseLocalhost no
PrintMotd no
PrintLastLog yes
TCPKeepAlive yes
#UseLogin no

#MaxStartups 10:30:60
#Banner /etc/issue.net

# Allow client to pass locale environment variables
AcceptEnv LANG LC_*

Subsystem sftp /usr/lib/openssh/sftp-server

# Set this to 'yes' to enable PAM authentication, account processing,
# and session processing. If this is enabled, PAM authentication will
# be allowed through the ChallengeResponseAuthentication and
# PasswordAuthentication.  Depending on your PAM configuration,
# PAM authentication via ChallengeResponseAuthentication may bypass
# the setting of "PermitRootLogin without-password".
# If you just want the PAM account and session checks to run without
# PAM authentication, then enable this but set PasswordAuthentication
# and ChallengeResponseAuthentication to 'no'.
UsePAM yes

Я можу sshвід PC2 до PC1 і запускати програми GUI просто чудово. Але я не можу віддалено запускати програми GUI на ПК2 з будь-якого комп’ютера (включаючи сам ПК2). Ось результат я отримав при спробі запустити xtermпісля того, як ssh -Xvvv localhostна PC2:

user@pc2:~$ xterm
debug1: client_input_channel_open: ctype x11 rchan 3 win 65536 max 16384
debug1: client_request_x11: request from 127.0.0.1 42667
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: pc2:11.0

Дозволи та право власності на ~ / .Xauthority виглядають нормально:

user@pc2:~$ ls -l ~/.Xauthority 
-rw------- 1 user user 301 Aug 27 13:49 /home/user/.Xauthority

Я годинами намагався виправити цю проблему гуглінг, але, схоже, нікуди не дістався. Мені потрібна твоя допомога.

Відповіді:


4

Подивіться, чи є у вас файл ~/.ssh/rcабо /etc/ssh/sshrcна сервері. Відповідно до цього питання , якщо один із цих сценаріїв існує, він sshdзапустить його під час запуску сеансу, і скрипт відповідає за виклик xauthналаштування автентифікації X11. Якщо жоден з файлів не існує, sshd телефонує xauthбезпосередньо. Можливо, у вас є один із цих файлів на віддаленому сервері, і він не виконує свою роботу належним чином.

На сторінці manSS OpenSSH sshd є приклад коду оболонки, який повинен виконувати скрипт rc, щоб налаштувати xauth:

Якщо переадресація X11 використовується, вона отримає пару "прото cookie" на своєму стандартному вході (та DISPLAY у своєму оточенні). Сценарій повинен викликати xauth (1), оскільки sshd не запустить xauth автоматично для додавання файлів cookie X11.

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
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.