J'ai un ordinateur de travail et de travail, l'ordinateur à domicile a une adresse IP statique.
Si je suis SSH de mon ordinateur de travail à mon ordinateur à domicile, la connexion SSH fonctionne, mais les applications X11 ne sont pas affichées.
Dans mon /etc/ssh/sshd_config
À la maison:
X11Forwarding yes
X11DisplayOffset 10
X11UseLocalhost yes
Au travail, j'ai essayé les commandes suivantes:
xhost + home HOME_IP
ssh -X home
ssh -X HOME_IP
ssh -Y home
ssh -Y HOME_IP
Mon /etc/ssh/ssh_config
Au travail:
Host *
ForwardX11 yes
ForwardX11Trusted yes
Mon ~/.ssh/config
Au travail:
Host home
HostName HOME_IP
User azat
PreferredAuthentications password
ForwardX11 yes
Mon ~/.Xauthority
Au travail:
-rw------- 1 azat azat 269 Jun 7 11:25 .Xauthority
Mon ~/.Xauthority
À la maison:
-rw------- 1 azat azat 246 Jun 7 19:03 .Xauthority
mais ça ne marche pas
Après avoir créé une connexion SSH à la maison:
$ echo $DISPLAY
localhost:10.0
$ kate
X11 connection rejected because of wrong authentication.
X11 connection rejected because of wrong authentication.
X11 connection rejected because of wrong authentication.
X11 connection rejected because of wrong authentication.
X11 connection rejected because of wrong authentication.
X11 connection rejected because of wrong authentication.
X11 connection rejected because of wrong authentication.
X11 connection rejected because of wrong authentication.
kate: cannot connect to X server localhost:10.0
J'utilise iptables
à la maison, mais j'ai autorisé le port 22. Selon ce que j'ai lu c'est tout ce dont j'ai besoin.
pd. avec -vvv
[. Transfert avec l'entrepoiffage d'authentification. Débogou2: Channel 1: Demande X11-Req Confirmez 1 [. ____] Débug12: Client_session2_Setup: Id 1 [ Channel 1: Demande Pty-Req Confirmer 1 [.____] ...
Lorsque vous essayez de lancer kate
:
débogué1: client_input_channel_open: ctype x11 rchan 2 win 65536 max 16384 [ fd 8 est o_nonblock Débug1: canal 2: nouveau [x11] Débug1: Confirmer x11 [.____] Débug2: x11 Connexion utilise un protocole d'authentification différent. X11 Connexion rejetée parce que de mauvaise authentification. Débogou2: x11 rejeté 2 i0/o0 [.____] Débug12: Channel 2: Lire a échoué [.____] Débug2: Channel 2: Close_read Debug2: Channel 2: Entrée ouverte -> Drain Debug2: Channel 2: Ibuf vide Débugou2: Channel 2: Envoyer eof Débugou 2: Drain de l'entrée -> Fermé Débugou2 : Channel 2: échec de l'écriture [.____] Débug2: canal 2: close_write [.____] debug2: canal 2: sortie ouverte -> fermé Debug2: x11 Fermé 2 I3/O3 [.____] DEBUG2: Channel 2: Envoyer Fermer Débugou2: Channel 2: RCVD Fermer [.____] Débugou: Channel 2: est mort Debug2: canal 2: poubelle Débug1: Channel 2: Gratuit: X11, Nchannel 3 [.____] Débug3: Channel 2: Statut: Les connexions suivantes sont ouvertes: [.____] # 1 Séance client (T4 R0 I0/0 O0/0 FD 5/6 CC -1) [.____] # 2 x11 (T7 R2 I3/0 O3/0 FD 8/8 CC -1) # le même Comme ci-dessus répété environ 7 fois [.____] [.____] Kate: Impossible de se connecter à X Server localhost localhost: 10.0 [.____]
pd2 Veuillez fournir votre numéro de distribution et de version Linux.
[.____] Utilisez-vous un environnement GNOME ou KDE par défaut pour X ou quelque chose d'autre que vous avez personnalisé vous-même?
[.____] azat: ~ $ KDED4 -Version Qt: 4.7.4 [.____] Plate-forme de développement KDE: 4.6.5 (4.6.5) KDE Daemon: $ ID $
Invoquant-tu directement SSH sur une ligne de commande d'une fenêtre de terminal?
Quel terminal utilisez-vous? xterm, gnome-terminal ou?
[.____] Comment avez-vous démarré le terminal en cours d'exécution dans l'environnement X? À partir d'un menu? Hotkey? ou ?
[.____] de l'émulateur de terminal `Yakuake` Manualy Appuyez sur` Ctrl + N` et écrivez des commandes [.____]
Pouvez-vous exécuter Xeyes de la même fenêtre de terminal où le SSH -X échoue?
`Xeyes` - n'est pas installé Mais` kate` ou une autre application KDE est en cours d'exécution
Appliquez-vous la commande SSH comme le même utilisateur que vous êtes connecté à la session X?
[.____] From the same user
pd
Je télécharge aussi des sources ssh
[$ var] et utilisez debug2()
Écrivez pourquoi il est indiqué que la version est différente
[.____] Cela voit des cookies, et l'un d'entre eux est vide, un autre est MIT-MAGIC-COOKIE-1
La Raison SSH X X ne fonctionnait pas, c'est parce que j'ai un fichier de configuration /etc/ssh/sshrc
.
La fin de la page sshd(8)
Page d'homme indique:
Si
~/.ssh/rc
existe, le gère; sinon si/etc/ssh/sshrc
existe, le gère; sinon court xauth
Donc, j'ajoute les commandes suivantes à /etc/ssh/sshrc
(également à partir de la page SSHD Man) sur le côté serveur:
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
Et il fonctionne!
Chaque fois que vous rencontrez des problèmes avec SSH, la première chose à faire est de gérer le client avec le -v
Option de fournir cette sortie aux autres à inspecter:
ssh -v user@somewhere
Je vais deviner que le problème est sur votre système local. Comment appelez-vous la commande SSH? Est-ce que vous l'utilisez manuellement dans une coquille? Ou est-il exécuté dans le cadre d'un script? Dans les deux cas, vous voudrez vous assurer que votre système local dispose du jeu d'environnement DISPLAY
correctement. Il doit également être réglé correctement sur le côté distant, mais cette valeur sera différente sur le côté distant que le côté local.
D'après ce que vous avez écrit, il semble qu'il soit réglé correctement sur l'hôte distant (et par extension, le transfert X11 est en cours de configuration correctement par SSH). Sur le système distant que vous avez:
$ echo $DISPLAY
localhost:10.0
Qu'est-ce que cela montre du côté local? Cela devrait être facile à vérifier si vous êtes dans une coquille à la fois en faisant écho à la valeur, ainsi que de démarrer une application X de cette coquille ... Vous pouvez toujours utiliser le vénérable xeyes
pour ce type de test, bien sûr! :)
D'autre part, si vous appelez la commande SSH à partir d'un script ou attaché à une touche de raccourci, il peut ne pas hériter de l'environnement que vous attendez, alors DISPLAY
variable d'environnement sur le côté local pourrait ne pas être défini du tout.
En outre, comme ça sonne comme si vous vous trompiez avec votre .Xauthority
Fichier Vous voudrez peut-être le supprimer entièrement, puis vous déconnecter de votre session x et reconnectez-vous de manière à ce qu'il le recevera automatiquement. Il y a rarement un besoin de muck avec votre .Xauthority
, essayant donc qui est probablement une mesure désespérée qui n'aidera pas.
Ce que vous devriez voir du côté local est:
$ echo $DISPLAY
:0.0
Sur un système correctement configuré si vous ouvrez une coquille, vous ne devez pas avoir besoin de la définir à la main, il doit être hérité de l'environnement qui a commencé votre coquille. Cependant, j'ai vu des configurations de gestionnaire de fenêtres/raccourcies qui ne manipulent pas correctement l'héritage variable d'environnement. Si vous avez du système Linux en marche gnome-session
ou kde-session
que vous utilisez pour lancer vos coquilles ou vos scripts à partir de vos variables d'environnement X de session doit être réglée correctement comme décrit dans la section Documentation Ubuntu sur l'héritage des variables d'environnement :
Lorsqu'un processus parent crée un processus enfant, par exemple lorsque nous exécutons la commande "Gedit" à partir du terminal et "Bash" (le processus parent) crée "Gedit" (processus enfant), le processus enfant hérite de toutes les variables d'environnement et valeurs que le processus parent a eu.
...
Remarque: Dans l'environnement GNOME Graphical Desktop, GNOME-SESSION est le processus parent de tous les processus exécutés sur le bureau. Ce fait (ainsi que le principe d'héritage) est la clé de notre capacité à influencer puissamment le fonctionnement de notre bureau avec des variables d'environnement. Le processus équivalent de KDE est KDE-SESSION.
[~ # ~] Mise à jour [~ # ~ #]
Merci d'avoir posté la sortie de ssh -vvv
. Dans ce cas, la verbosité supplémentaire de -vvv
versus juste -v
est utile. La sortie de débogage me dit que le transfert X11 est en cours de configuration correctement:
debug2: x11_get_proto: /usr/bin/xauth list :0 2>/dev/null
debug1: Requesting X11 forwarding with authentication spoofing.
debug2: channel 1: request x11-req confirm 1
Mais le :0
Dans la première ligne me conduit à croire qu'il reste encore une erreur de configuration du côté local de la manière dont vous invoquez SSH. Sur de nombreux systèmes, la valeur par défaut pour DISPLAY
est :0.0
, ne pas :0
. Êtes-vous en quelque sorte réglées la valeur de DISPLAY
manuellement vous-même avant d'invoquer la commande SSH?
Plus d'informations sur votre système local et comment vous invoquez la commande SSH serait utile à ce stade.
xeyes
de la même fenêtre de terminal où le ssh -X
échoue?Ce dernier article est important. Si vous exécutez SSH comme un autre utilisateur (par exemple, si vous ouvrez une fenêtre de terminal racine au lieu d'une fenêtre de terminal utilisateur), vous rencontrerez ce problème même si vous définissez explicitement DISPLAY=:0
Depuis que vous n'avez pas d'autorisations pour vous connecter au serveur X par défaut comme un autre utilisateur (même en tant que root!)
Vos configuries semblent être correctes, mais essayez "SSHX Home" à mesure que Agemen vous a suggéré.
En outre, si tout échoue, essayez ceci:
Après vous SSH sur votre machine à domicile du travail, sur "Accueil" Type:
xauth list
Ensuite, sur "travail", tapez
xauth
Qui vous donnera une invite "xauth>". À partir de là, tapez "Ajouter", puis Copy Coller la sortie de la "liste Xauth", une ligne à la fois (chaque ligne préférée par "Ajouter"). Par exemple:
someguy@work:~$ xauth
Using authority file /var/run/gdm/auth-for-someguy-4MYV85/database
xauth> add work/unix:0 MIT-MAGIC-COOKIE-1 781cc753194fd55ecdf6c4cf105c40e3
xauth>
Faites le nous savoir.