J'ai des hôtes A, B et C. Depuis l'hôte A, je peux accéder via ssh uniquement B. De B, je peux accéder à C. Je veux pouvoir exécuter des programmes X11 sur C et transmettre l'affichage à A.
J'ai essayé ceci:
A $ ssh -X B B $ ssh -X C C $ xclock Erreur: impossible d'ouvrir l'affichage:
Mais ça ne marche pas.
Il y a plusieurs façons de le faire, celle que je préfère est de transférer le port ssh:
Tout d'abord, connectez-vous à la machine B et transférez [localPort] à C: 22 à B
A$ ssh -L [localPort]:C:22 B
Ensuite, connectez-vous à C à partir de A via ce tunnel nouvellement créé à l'aide de [localPort], en transmettant X11
A$ ssh -X -p [localPort] localhost
Maintenant, nous pouvons exécuter des programmes X11 sur C et les afficher sur A
C$ xclock
[localPort] peut être n'importe quel port que vous n'écoutez pas déjà sur A, j'utilise souvent 2222 pour plus de simplicité.
Cela peut facilement être accompli en utilisant la redirection de port:
A$ ssh -NL 2022:C:22 B &
A$ ssh -X -p 2022 localhost
C$ xclock
Port localhost: 2022 est transmis à C: 22 via B SSH vers C via localhost: 2022 Utilisez X comme d'habitude
En supposant que le problème est que la machine du milieu n'a pas X, mais qu'elle est configurée autrement pour autoriser le transfert X11, installez simplement xauth.
sur un système basé sur yum (Fedora, redhat, centos):
B$ Sudo yum install xauth
sur un système basé sur apt (debian, ubuntu):
B$ Sudo apt-get install xauth
Pour les versions plus récentes opensshd, vous devez désactiver X11UseLocalhost
pour que cela fonctionne.
Vous devez le faire sur l'hôte C /etc/ssh/sshd_config
et redémarrez sshd pour que cela fonctionne:
X11Forwarding yes
X11UseLocalhost no
Vous ne pouvez pas transférer l'affichage X11 si X11Forwarding est désactivé dans un sshd que vous utilisez.
man sshd_config:
X11Forwarding
Specifies whether X11 forwarding is permitted. The argument must be “yes”
or “no”. The default is “no”.
Vous devez vous assurer que X11Forwarding est activé sur la destination et tous les sshds intermédiaires que vous utilisez.
Juste un petit indice: vous devriez essayer d'utiliser VNC, la redirection d'écran X11 consomme beaucoup de bande passante.
Si vous passez souvent de A à C, vous pouvez configurer B comme proxy:
A:~/.ssh/config
:
Host C ForwardX11 yes ProxyCommand ssh -W %h:%p B
alors c'est juste:
A$ ssh C xclock
Avez-vous essayé avec
A$ ssh -Y B
B$ ssh -Y C
C$ xlclock
L'indicateur -Y "Active le transfert X11 approuvé".