
Para trabajar, tengo que hacer ssh desde mi máquina local a través de la Máquina A para llegar a la Máquina B. El problema es que la Máquina A no tiene reenvío X11 y no tengo privilegios de superusuario para cambiar eso. Tengo privilegios de superusuario en la máquina B y tiene activado el reenvío X11.
¿Hay alguna manera de reenviar X11 desde B a través de A a mi máquina local, sin que el reenvío X11 esté activado en A?
Intenté ejecutarlo
ssh -t -X user@A ssh -X user@B
y ssh -t user@A ssh -X user@B
la Máquina A todavía genera resultados X11 forwarding request failed on channel 0
al iniciar sesión.
Respuesta1
agregue esto a su ~.ssh/config:
Host BviaA
HostName hostB
ProxyCommand ssh user@hostA nc %h %p 2> /dev/null
Entonces ssh -X user@BviaA
debería funcionar
Tenga en cuenta que en la sección de configuración anterior he utilizado Host BviaA
para que sea más obvio lo que sucede. También puede utilizar Host hostB
para que funcione de forma totalmente transparente: ssh -X user@hostB
(como si no se necesitara una puerta de enlace).
Alternativamente, como una sola línea para realizar pruebas sin ningún cambio de configuración:
ssh -X -oProxyCommand="ssh user@hostA nc %h %p" user@hostB
Respuesta2
Muchas gracias @rudimeier por tu respuesta.
tuve un problema conCarolina del Norteopción cuando se usa ssh, pero esta variación (basada en lo que explicó @aDroidaquí) funcionó para mí. Entonces esto es esencialmente lo mismo.respuesta de una sola líneade @rudimeier para versiones más recientes de OpenSSH:
$ ssh -X -oProxyCommand="ssh [email protected] -W %h:%p" [email protected]
@usuario4556274respuestaTambién funcionó para mí (gracias a ti también).
Simplemente agregaría nombres de usuario en ambos pasos para aclarar cómo funciona para novatos como yo (después de escribir el primer comando, el puerto localhost 2222 se comportará como si fuera el puerto 22 en la máquina B; por lo tanto, en el segundo comando pasamos el nombre de usuario de la máquina B):
$ ssh -Nf -L2222:destination.host-B.address:22 [email protected]
$ ssh -p 2222 -X userB@localhost
Respuesta3
Es posible que pueda reenviar puertos a través de A. Utilice
$ ssh -Nf -L2222:B:22 A
para iniciar y poner en segundo plano un proceso ssh que se reenviará desde su máquina local a B a través de A. Luego conéctese a B usando
$ ssh -p 2222 -X localhost