Comando ssh proxyjump para arquivo de configuração

Comando ssh proxyjump para arquivo de configuração

Eu uso um comando ssh para fazer login em um nó remoto usando um nó intermediário via proxyjump. Os nós remotos e intermediários são servidores Linux e meu cliente é um Macbook. Este comando funciona e se parece com:

ssh -i .ssh/id_file -J user1@jump_node -A -D remote_port user2@remote_node

onde substituo jump_node e remote_node pelos nomes de host dos nós intermediários e remotos e remote_port pela porta sshd em remote_node.

Minha primeira e principal pergunta é: como transformar este comando em uma seção de configuraçãoque posso colocar no meu arquivo .ssh/config? Eu olhei para a página de manual do ssh e não consegui obter as opções de configuração correspondentes para -De -Asinalizadores (acho que ForwardAgent yespara -A?). Alguém poderia explicar esses sinalizadores e como criar uma seção de configuração correta com este comando?


Minha outra pergunta é menos importante, mas me ajudaria a entender o que está acontecendo aqui.Esta segunda pergunta é sobre um erro que recebo quando emito um comando ligeiramente diferente.

A maior parte da documentação que li online sugere o uso de um comando como este:

ssh -i .ssh/id_file -J user1@jump_node user2@remote_node:remote_port

mas quando tento este comando (com e sem sinalizador -A), recebo o seguinte erro:

channel 0: open failed: connect failed: Name or service not known
stdio forwarding failed
kex_exchange_identification: Connection closed by remote host
Connection closed by UNKNOWN port 65535

Não consegui descobrir o que esse erro significa e se ele tem algumas dicas que eu poderia usar?

Responder1

Verman 5 ssh_config:

ForwardAgent yes
IdentityFile .ssh/id_file

Host jump_node
    User user1

Host remote_node
   ProxyJump jump_node
   User user2

e apenas corra ssh remote_node.

Você pode até construir uma cadeia dessa forma, se também especificar (outra) ProxyJumppara o jump_nodetoo.


O segundo problema é que ssh user2@remote_node:remote_porta sintaxe está incorreta. A mensagem de erro afirma Name or service not knownporque tentou (e falhou) resolver remote_node:remote_portcomo um nome de host (sim, com dois pontos incorporados), não remote_nodecomo você poderia esperar. Tente executar a mesma coisa sem -J, a mensagem de erro ficará um pouco mais clara.

Eu interpretaria isso como uma tentativa de especificar uma porta onde o servidor SSH está escutando no nó remoto; para isso, use -po parâmetro de linha de comando ou Porta opção de entrada do host em um arquivo de configuração.

Além disso, isso não tem nada em comum com a -Dopção de linha de comando. E o argumento não é uma "porta remota". Em vez disso, essa opção faz algo totalmente diferente, ou seja, faz com que o cliente SSHouvirna porta especificadana máquina locale aceitar conexões SOCKS, e o remoto será usado como nó de saída. Você pode, por exemplo, configurá-lo no navegador local, para que ele acesse a internet através do túnel SSH e terceiros (servidores web) vejam suas conexões como provenientes do IP do host remoto; ninguém verá seu IP "real", exceto o servidor SSH (que neste caso verá o endereço do servidor de salto). Pôressena configuração, você usa DynamicForwarda opção no arquivo de configuração.

informação relacionada