Como ativar o encaminhamento SSH X11 através de um servidor adicional?

30

Eu tenho os hosts A, B e C. Do host A, eu posso acessar somente através do ssh B. De B, posso acessar C. Eu quero ser capaz de executar programas X11 em C e encaminhar a exibição para A.

Eu tentei isso:

A$ ssh -X B
B$ ssh -X C
C$ xclock
Error: Can't open display:

Mas isso não funciona.

    
por lexsys 12.08.2009 / 07:37

7 respostas

20

Existem várias maneiras de fazer isso, a que eu prefiro é encaminhar a porta ssh:

Primeiro, conecte-se à máquina B e encaminhe [localPort] para C: 22 até B

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

Em seguida, conecte-se a C de A através deste túnel recém-criado usando [localPort], encaminhando X11

A$ ssh -X -p [localPort] localhost

Agora podemos executar programas X11 em C e exibi-los em A

C$ xclock

[localPort] pode ser qualquer porta que você ainda não esteja ouvindo em A, geralmente uso o 2222 para simplificar.

    
por 12.08.2009 / 07:54
7

Isso pode ser feito facilmente usando o encaminhamento de porta:

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

Porta localhost: 2022 é encaminhado para C: 22 via B SSH para C via localhost: 2022 Use X como normal

    
por 12.08.2009 / 08:10
4

Assumindo que o problema é que a máquina do meio não tem X, mas de outra forma configurada para permitir o encaminhamento do X11, basta instalar o xauth.

em um sistema baseado no yum (fedora, redhat, centos):

B$ sudo yum install xauth

em um sistema baseado em apt (debian, ubuntu):

B$ sudo apt-get install xauth
    
por 12.10.2012 / 02:54
2

Você não pode redirecionar a exibição do X11 se você tiver o X11Forwarding desabilitado em qualquer sshd que esteja usando.

man sshd_config:

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

Você precisa ter certeza de que o X11Forwarding está habilitado no destino e todos os sshds intermediários que você está usando.

Apenas uma pequena dica: você deve tentar usar o VNC, o encaminhamento de exibição do X11 consome bastante largura de banda.

    
por 12.08.2009 / 08:59
2

Para versões mais recentes do opensshd, é necessário desativar X11UseLocalhost para que isso funcione.

Você precisa fazer isso em /etc/ssh/sshd_config do Host C e reiniciar o sshd para que isso funcione:

X11Forwarding yes
X11UseLocalhost no
    
por 05.09.2013 / 23:15
2

Se você costuma ir de A para C, pode configurar o B como proxy:

A:~/.ssh/config :

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

então é só:

A$ ssh C xclock
    
por 12.04.2017 / 02:46
1

Você já tentou com

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

O sinalizador -Y "Ativa o encaminhamento confiável do X11".

    
por 12.08.2009 / 08:00