Como posso reescrever o seguinte comando com ProxyCommand
?
ssh -l username1 -t jumphost1 \
ssh -l username2 -t jumphost2 \
ssh -l username3 -t jumphost3 \
ssh -l username4 server
Isso não 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
Estou ciente de seu uso com nc
, mas estou procurando uma maneira de usá-lo com mais de 3 saltos e também use essa opção com scp
. Eu verifiquei a ssh_config
página de manual, mas as informações são bastante escassas, pelo menos para mim.
EDITAR
Tentei usar ProxyCommand
aninhado em outro, ProxyCommand
conforme sugerido abaixo, mas sempre recebo algo nas seguintes linhas
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.
Felizmente, desde 7.3
-J
ou ProxyJump
serve ao meu propósito - embora eu ainda precise resolver a configuração das minhas chaves.
ssh -q -J user1@jumphost1,user2@jumphost2,user3@jumphost3 user@server
scp
, porque o SCP está esperando mensagens de controle do SCP, mas recebe mensagens de controle do SSH e falha. Por outro lado, oProxyCommand
faz de forma transparente e, portanto, o mais externossh
(ouscp
) recebe as mensagens diretamente do outro lado.>
prompt onde está esperando para interromper a continuação da linha, eu acho - ou seja, o comando nunca é executado.%
deve funcionar:%%h
no seu casoEu fiz isso com dois saltos, mas deve funcionar para três. A maneira mais simples é
~/.ssh/config
definir o arquivo em cada host. Então, se você quer ser emhosta
e começar ahostd
viahostb
e hostc`, você pode definir suas configurações da seguinte maneira:Em
hosta:~/.ssh/config
:Em
hostb:~/.ssh/config
:Em
hostc:~/.ssh/config
:Você pode, então,
ssh hostd
em qualquer um dos hosts da cadeia e seguirá em frentehostd
.O uso do netcat para o proxy não interfere
scp
.Se, por algum motivo, você realmente não quiser usar
~/.ssh/config
arquivos locais , faça o seguintehosta
:fonte
nc
uso de. Você pode realmente reescrever o comando que eu posteiProxyCommand
como opção?scp
". Não interfere comscp
. Mas darei a você o comando comicamente longo como uma edição em breve.ProxyCommand
aninhamento? Se você reler meu post, verá que essa é a essência. Eu pensei que poderia, em vez de aninhar como você, encadear todos os nós do meioProxyCommand
. Ainda me pergunto se isso é possível.ProxyCommand
diretrizes junto ao próximo host da cadeia.