Un petit mémo sur comment se connecter à un serveur par rebond avec X11-forwarding sans interface graphique sur le serveur intermédaire pour résoudre l’erreur : Can’t open display.
Situation de départ
- Pc sous Linux avec interface graphique, adresse IP 192.168.1.100/24
- Serveur A sans interface grapqhique et sans serveur X, adresse IP 10.10.8.5/25
- Serveur B sans interface graphique mais un serveur X installé pour éxécuter des programmes ayant besoin de X, adresse IP 10.10.8.6/25
- Le serveur A peut être atteint du réseau 192.168.0.0/24 et 10.10.8.0/25
- Le serveur B ne peut être atteint qu’à partir du réseau 10.10.8.0/25
Premier test :
pc-linux$ ssh -X serveur-A serveur-A$ ssh -X serveur-B serveur-B$ xclock
Error: Can’t open display:
Connexion par rebond sans interface graphique avec X-Forwarding
- Sur le serveur de rebond, ici serveur A installé le paquet xauth :
- Debian / Ubuntu :
apt install xauth
- CentOS :
yum install xauth
nano /etc/ssh/sshd_config
X11Forwarding yes
systemctl restart sshd
Second test :
pc-linux$ ssh -X serveur-A serveur-A$ ssh -X serveur-B serveur-B$ xclock
Avec les versions pas trop vieilles d’OpenSSH, il y a plus simple pour rebondir d’un serveur sur un autre, avec l’option de configuration ProxyJump, ou l’option de ligne de commande -J. Exemple :
ssh -J serveur-A serveur-B
Pour se connecter à serveur-B, le programme ssh va se connecter sur serveur-A, et de là, ouvrir une connexion réseau TCP sur serveur-B, port 22, transférer tout ce qui y passe, et l’utiliser en guise de connexion sur serveur-B.
Le rapport avec le transfert d’affichage X11 ? Eh bien, aucun transfert d’affichage depuis serveur-A, le transfert ne se fait que directement avec serveur-B puisqu’on a une connexion SSH dessus, et non une connexion SSH sur serveur-B sur laquelle on ferait tourner un autre client SSH.
Merci Elessar pour ce complément d’informations :-)