ssh renvoie le message "La demande de transfert X11 a échoué sur le canal 1"

33

Lorsque je ssh sur un serveur distant qui n'exécute aucun type d'environnement de bureau X11, je reçois le message suivant.

$ ssh user@server
X11 forwarding request failed

$ ssh user@server ls
X11 forwarding request failed on channel 1
file1
file2
...

Comment puis-je me débarrasser de ces messages?

slm
la source

Réponses:

38

Ces messages peuvent être éliminés par l’une des trois méthodes, en utilisant uniquement les options SSH. Vous pouvez toujours envoyer des messages à /dev/nullmais ces méthodes essaient de traiter le message par la configuration, plutôt que de simplement les intercepter et de les vider.

Méthode n ° 1 - installer xauth

Le serveur sur lequel vous vous connectez se plaint de ne pas pouvoir créer une entrée dans le .Xauthorityfichier de l'utilisateur , car il xauthn'est pas installé. Vous pouvez donc l'installer sur chaque serveur pour vous débarrasser de ce message gênant.

Sur Fedora 19, vous installez xauthcomme ceci:

$ sudo yum install xorg-x11-xauth

Si vous essayez ensuite d' sshentrer sur le serveur, vous verrez un message indiquant qu'une entrée est en cours de création dans le .Xauthorityfichier de l'utilisateur .

$ ssh root@server
/usr/bin/xauth:  creating new authority file /root/.Xauthority
$

Les connexions suivantes ne montreront plus ce message.

Méthode n ° 2 - le désactiver via ForwardX11

Vous pouvez indiquer au sshclient de ne pas activer le transfert X11 en incluant le paramètre SSH ForwardX11.

$ ssh -o ForwardX11=no root@server

Vous pouvez faire la même chose avec le -xcommutateur:

$ ssh -x root@server

Cela ne désactivera que temporairement ce message, mais c'est une bonne option si vous ne pouvez pas ou ne souhaitez pas installer xauthsur le serveur distant.

Méthode n ° 3 - désactivez-la via sshd_config

Il s’agit généralement de la valeur par défaut, mais dans le cas contraire, vous pouvez configurer votre sshdserveur pour que X11Forwarding soit désactivé, dans /etc/ssh/sshd_config.

X11Forwarding no

Parmi les 3 méthodes que j'utilise généralement # 2, parce que je veux souvent la X11Forwardingplupart de mes serveurs, mais que je ne veux pas voir les X11....avertissements

$ HOME / .ssh / config

La plupart du temps, ces messages ne seront même pas affichés. Ils ne sont généralement présents que lorsque vous avez les entrées suivantes dans votre $HOME/.ssh/configfichier, en haut.

ServerAliveInterval 15
ForwardX11 yes
ForwardAgent yes
ForwardX11Trusted yes

GatewayPorts yes

Il s’agit donc de cette configuration, qui régit en fin de compte la génération de ces X11..messages. La méthode n ° 2 semble donc être la plus appropriée si vous souhaitez utiliser ForwardX11 yeson par défaut, puis la désactiver de manière sélective pour certaines connexions du sshpoint de vue du client. .

Sécurité

Il est généralement déconseillé de courir avec ForwardX11 yesà tout moment. Ainsi, si vous souhaitez exploiter vos connexions SSH de la manière la plus sécurisée possible, procédez de la manière suivante:

  1. Ne pas inclure ForwardX11 yesdans votre $HOME/.ssh/configdossier
  2. Utilisez ForwardingX11 uniquement lorsque vous avez besoin de ssh -X user@server
  3. Si vous le pouvez, désactivez X11Forwardingcomplètement le serveur pour qu'il ne soit pas autorisé

Les références

slm
la source
Pouvez-vous m'aider avec unix.stackexchange.com/questions/470331/… ?
Surexchange
Pour mémoire, j'ai reçu ce message quand je suis en train de lancer des clients X sur le serveur distant. Ils ne lanceraient pas car $ DISPLAY n'était pas défini. J'ai réussi à résoudre ce problème avec votre première suggestion: installez xauth.
Tom Ellis
13

Dans mon cas, ajouter cette chaîne pour /etc/ssh/sshd_configrésoudre le problème:

X11UseLocalhost no
utilisateur3132194
la source
Cela a fonctionné pour moi (le serveur avait déjà xauth installé). Merci.
Paul Higgins
Cela a semblé résoudre mon problème, mais je ne comprends pas pourquoi, ce qui est préoccupant. J'ai ce qui devrait être trois machines Debian 7 identiques, dont l'une a soudainement cessé d'accepter le locahosttransfert X11. Le transfert X11 sur les deux autres fonctionne toujours. Une idée de ce qui aurait pu changer?
Kyle Strand
12

Couru à travers cela aujourd'hui et me frappa la tête pendant un moment jusqu'à ce que je suis tombé sur un réglage ssh:

Si c'est RHEL 7 (centOS, OEL, etc.) et que l'ipv6 est désactivé, il faut:

AddressFamily inet

défini dans / etc / ssh / sshd_config.

Systemspoet
la source
si seulement le message d'erreur lié à cela ...
Jack Wasey
tu sais ce qui est drôle? Je suis tombé dessus aujourd'hui et l'ai cherché sur Google, j'ai trouvé cet article et j'ai trouvé mon propre commentaire d'il y a quatre ans et j'ai dit "OH OUI, C'EST LE PROBLÈME."
Systemspoet
2

Une autre légère variation serait si vous vouliez ne plus voir ce message (c'est-à-dire cesser d'essayer de transférer X11) pour certains serveurs tout en conservant la valeur par défaut ForwardX11, oui pour toutes les autres connexions.

Pour ce scénario, vous pouvez désactiver le transfert X11 pour un hôte (ou une plage) spécifique dans votre ~ / .ssh / config. Quelque chose comme ça:

host 10.1.1.*
ForwardX11 no 

Remerciement: Il s’agit d’une légère amélioration de la réponse existante (et très complète) - car je ne saurais le dire!

philarmour
la source
2

Si vous exécutez le client en mode commenté ( ssh -v user@host) vous donne

debug1: Remote: No xauth program; cannot forward with spoofing.

mais xauthest en effet installé sur le serveur, c'est probablement parce que sshd recherche l' exécutable de xauth dans un emplacement incorrect ( / usr / X11R6 / bin / xauth généralement). On peut résoudre ce problème en définissant

XAuthLocation /usr/bin/xauth

dans / etc / sshd / sshd_config (ou quel que soit votre serveur avec lequel vous avez configuré).

Anton Samsonov
la source
Cela a fonctionné pour moi sur CentOS 7. C'est le message d'erreur exact que je voyais.
Brian Minton
Ce fut mon problème, en essayant de vous connecter à distance à un Mac. La bonne incantation était XAuthLocation / opt / X11 / bin / xauth
Leon Avery
1

Configuration du transfert X11 par hôte

En plus de toutes les excellentes réponses déjà présentes, vous pouvez configurer ForwardX11sur une base hôte, ainsi, si seulement cela serveréchoue, vous pouvez ajouter une entrée à votre ~/.ssh/configfichier sous la forme suivante:

Host server server.domain.dom
    ForwardX11 no

Vous pouvez même utiliser des entrées comme celle-ci comme alliases pour des ensembles complets de configurations

Host my.server
    HostName server.domain.dom
    User user
    Port 1234
    ForwardX11 no

Ceci est particulièrement utile si vous avez configuré les noms de serveur de saisie semi-automatique pour SSH et SCP .

Mark Booth
la source
1

Je suis tombé sur cette question après une dispute avec un sshd-xauthvirus âgé de près de dix ans. Deux solutions sont rapportées, la première en contournant xauth, la seconde en corrigeant le bogue.


Solution 1 - contourner xauth

  • local - la machine locale desservant un serveur X.
  • remote - la machine distante servant l'application qui pilote les données allant au serveur X

À distance /etc/ssh/sshd_config:

X11Forwarding no
X11DisplayOffset 10
X11UseLocalhost yes

La télécommande ~/.Xauthorityest vide ou n'existe pas

Sur local:

Xephyr -ac -screen 1280x800 -br -reset   :2 &
DISPLAY=:2 ssh  -fR 6010:/tmp/.X11-unix/X2  user@remote "DISPLAY=:10 xeyes"

Lors du test, Local exécutait Ubuntu 18.05, Remote exécutait Debian Jesse.

J'ai aussi posté cette solution en réponse à une autre question.


Solution 2 - corrigez le bogue sshd / xauth

Cette solution est proche de celle de @systempoet ci - dessus , même si cela ne suffisait pas.

En plus de modifier /etc/ssh/sshd_configà distance:

AddressFamily inet

/etc/hosts à distance a également été modifié:

::1     localhost ip6-localhost ip6-loopback

Si l'un ou l'autre a été mis en commentaire, le message d'erreur

X11 forwarding request failed on channel 0

est apparu après l' ssh -X ...appel. En plus le /var/log/auth.logmontré l'erreur:

sshd[...]: error: Failed to allocate internet-domain X11 display socket

Testez pour produire le bogue (avant correction):

Machine locale:

$ Xephyr -ac -screen 1280x800 -br -reset -terminate  :2 &
$ DISPLAY=:2 ssh -X  user@remote
X11 forwarding request failed on channel 0
Craig Hicks
la source
0

Un point important à noter après avoir apporté les modifications de configuration est que vous devrez tuer sshd pour qu'il prenne en compte les modifications:

cat /var/run/sshd.pid | xargs kill -1

être l'utilisateur root.

unixia
la source
-2
  1. Définissez les 2 options suivantes /etc/ssh/sshd_configdans votre hôte RHEL

    X11Forwarding yes X11UseLocalhost no

  2. sudo /etc/init.d/sshd reload

  3. sudo yum install xauth
  4. ssh retournez à votre hôte RHEL avec le commutateur -X: ssh -X yourname@rhelbox
utilisateur149406
la source