Encaminhar X11 através de dois túneis SSH

Encaminhar X11 através de dois túneis SSH

Para trabalhar, preciso fazer ssh da minha máquina local através da Máquina A para chegar à Máquina B. O problema é que a Máquina A não tem encaminhamento X11 e não tenho privilégios de superusuário para mudar isso. Eu tenho privilégios de superusuário na Máquina B e o encaminhamento X11 está ativado.

Existe uma maneira de encaminhar o X11 de B através de A para minha máquina local, sem o encaminhamento do X11 ativado em A?

Tentei executar ssh -t -X user@A ssh -X user@Be ssh -t user@A ssh -X user@B a Máquina A ainda gera saída X11 forwarding request failed on channel 0no login.

Responder1

adicione isto ao seu ~.ssh/config:

Host BviaA
  HostName      hostB
  ProxyCommand  ssh user@hostA nc %h %p 2> /dev/null

Então ssh -X user@BviaAdeve funcionar

Observe na seção de configuração acima que usei Host BviaApara manter mais óbvio o que acontece. Você também pode usar Host hostBpara deixá-lo funcionar de forma totalmente transparente: ssh -X user@hostB(como se nenhum gateway fosse necessário.)

Alternativamente, como uma linha única para testes sem quaisquer alterações de configuração:

ssh -X -oProxyCommand="ssh user@hostA nc %h %p" user@hostB

Responder2

Muito obrigado @rudimeier pela sua resposta.

Eu tive um problema comnãoopção ao usar ssh, mas esta variação (com base no que @aDroid explicouaqui) funcionou para mim. Então isso é essencialmente o mesmoresposta de uma linhade @rudimeier para versões mais recentes do OpenSSH:

$ ssh -X -oProxyCommand="ssh [email protected] -W %h:%p" [email protected]

@usuário4556274respondertambém funcionou para mim (graças a você também).

Eu apenas adicionaria nomes de usuário em ambas as etapas para esclarecer como funciona para iniciantes como eu (depois de digitar o primeiro comando, a porta localhost 2222 se comportará como se fosse a porta 22 na máquina B; então, no segundo comando, passamos o nome de usuário da máquina B):

$ ssh -Nf -L2222:destination.host-B.address:22 [email protected]
$ ssh -p 2222 -X userB@localhost

Responder3

Você pode encaminhar porta através de A. Use

$ ssh -Nf -L2222:B:22 A

para iniciar e colocar em segundo plano um processo ssh que encaminhará de sua máquina local para B através de A. Em seguida, conecte-se a B usando

$ ssh -p 2222 -X localhost

informação relacionada