sviluppo-web-qa.it

Come abilitare l'inoltro SSH X11 attraverso un server aggiuntivo?

Ho host A, B e C. Dall'host A posso accedere solo tramite ssh B. Da B posso accedere a C. Voglio essere in grado di eseguire programmi X11 su C e inoltrare il display ad A.

Ho provato questo:

A $ ssh -X B 
 B $ ssh -X C 
 C $ xclock 
 Errore: Impossibile aprire il display: 

Ma non funziona.

34
lexsys

Esistono diversi modi per farlo, quello che preferisco è inoltrare la porta ssh:

Innanzitutto, connettiti alla macchina B e inoltra [localPort] a C: 22 a B

A$ ssh -L [localPort]:C:22 B

Quindi, connettiti a C da A attraverso questo tunnel appena creato usando [localPort], inoltrando X11

A$ ssh -X -p [localPort] localhost

Ora possiamo eseguire i programmi X11 su C e visualizzarli su A

C$ xclock

[localPort] può essere qualsiasi porta che non stai già ascoltando su A, spesso uso 2222 per semplicità.

26
dave

Questo può essere facilmente realizzato utilizzando il port forwarding:

A$ ssh -NL 2022:C:22 B &
A$ ssh -X -p 2022 localhost
C$ xclock

Porta localhost: 2022 viene inoltrato a C: 22 tramite B SSH a C tramite localhost: 2022 Usa X normalmente

7
AgentK

Supponendo che il problema sia che la macchina di mezzo non ha X, ma altrimenti configurata per consentire l'inoltro di X11, basta installare xauth.

su un sistema basato su yum (Fedora, redhat, centos):

B$ Sudo yum install xauth

su un sistema basato su apt (debian, ubuntu):

B$ Sudo apt-get install xauth
4
Jayen

Per le nuove versioni opensshd devi disabilitare X11UseLocalhost affinché funzioni.

È necessario eseguire questa operazione su /etc/ssh/sshd_config e riavvia sshd affinché funzioni:

X11Forwarding yes
X11UseLocalhost no
3
Brad Allison

Non è possibile inoltrare il display X11 se X11 Forwarding è disabilitato in qualsiasi SSH che si sta utilizzando.

man sshd_config:

X11Forwarding
  Specifies whether X11 forwarding is permitted. The argument must be “yes”
  or “no”.  The default is “no”.

Devi assicurarti che X11Forwarding sia abilitato sulla destinazione e tutti gli sshds intermedi che stai usando.

Solo un piccolo suggerimento: dovresti provare a usare VNC, l'inoltro del display X11 richiede abbastanza larghezza di banda.

2
asdmin

Se passi spesso da A a C, puoi configurare B come proxy:

A:~/.ssh/config:

Host C
  ForwardX11   yes
  ProxyCommand ssh -W %h:%p B

allora è solo:

A$ ssh C xclock
2
Jayen

Ci hai provato

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

Il flag -Y "Abilita l'inoltro X11 affidabile."

1
pyhimys