web-dev-qa-db-fra.com

Comment activer le transfert SSH X11 via un serveur supplémentaire?

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.

34
lexsys

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é.

26
dave

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

7
AgentK

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
4
Jayen

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
3
Brad Allison

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.

2
asdmin

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
2
Jayen

Avez-vous essayé avec

A$ ssh -Y B
B$ ssh -Y C
C$ xlclock

L'indicateur -Y "Active le transfert X11 approuvé".

1
pyhimys