¿Cómo puedo reescribir el siguiente comando con ProxyCommand
?
ssh -l username1 -t jumphost1 \
ssh -l username2 -t jumphost2 \
ssh -l username3 -t jumphost3 \
ssh -l username4 server
Esto no funciona
ssh -o ProxyCommand="\
ssh -l username1 -t jumphost1 \
ssh -l username2 -t jumphost2 \
ssh -l username3 -t jumphost3" \
-l username4 server
username1@jumphost1's password:
Pseudo-terminal will not be allocated because stdin is not a terminal.
Permission denied, please try again.
Permission denied, please try again.
Permission denied (publickey,gssapi-keyex,gssapi-with-mic,password).
ssh_exchange_identification: Connection closed by remote host
Soy consciente de su uso con nc
, pero estoy buscando la forma de usarlo con más de 3 saltos, y también uso esta opción con scp
. Revisé la ssh_config
página de manual, pero la información es bastante escasa, al menos para mí.
EDITAR
Intenté usar ProxyCommand
anidado en otro ProxyCommand
como se sugiere a continuación, pero siempre obtengo algo en las siguientes líneas
debug3: ssh_init_stdio_forwarding: 192.17.2.2:2222
debug1: channel_connect_stdio_fwd 192.17.2.2:2222
debug1: channel 0: new [stdio-forward]
debug2: fd 4 setting O_NONBLOCK
debug2: fd 5 setting O_NONBLOCK
debug1: getpeername failed: Bad file descriptor
debug3: send packet: type 90
debug2: fd 3 setting TCP_NODELAY
debug3: ssh_packet_set_tos: set IP_TOS 0x10
debug1: Requesting [email protected]
debug3: send packet: type 80
debug1: Entering interactive session.
Afortunadamente, desde 7.3
-J
o ProxyJump
sirve mi propósito - aunque todavía a tener que trabajar alrededor de mi configuración de teclas.
ssh -q -J user1@jumphost1,user2@jumphost2,user3@jumphost3 user@server
scp
, porque SCP espera mensajes de control de SCP, pero en su lugar recibe mensajes de control SSH y falla. Por otro lado, loProxyCommand
hace de forma transparente y, por lo tanto, el más externossh
(oscp
) recibirá los mensajes directamente desde el otro extremo.>
aparece el mensaje donde está esperando romper la continuación de la línea, es decir, el comando nunca se ejecuta.%
debería funcionar:%%h
en su casoHe hecho esto con dos saltos, pero debería funcionar para tres. La forma más simple es tener el
~/.ssh/config
archivo configurado en cada host. Entonces, si desea estar encendidohosta
y llegar ahostd
través dehostb
y hostc`, puede configurar sus configuraciones de esta manera:En
hosta:~/.ssh/config
:En
hostb:~/.ssh/config
:En
hostc:~/.ssh/config
:Luego puedes usar
ssh hostd
cualquiera de los hosts de la cadena y llegarás a elloshostd
.Usar netcat para el proxy no interfiere con
scp
.Si por alguna razón realmente no desea utilizar
~/.ssh/config
archivos locales , puede hacerlo enhosta
:fuente
nc
uso. ¿Puedes reescribir el comando que publiquéProxyCommand
como una opción?scp
". No interfiere conscp
. Pero te daré el comando cómicamente largo como una edición en breve.ProxyCommand
anidar? Si relees mi publicación, verás que esa es la esencia. Pensé que podría, en lugar de anidar como lo hiciste, encadenar todos los nodos intermediosProxyCommand
. Todavía me pregunto si eso es de alguna manera posible.ProxyCommand
directivas contigo al próximo anfitrión de la cadena.