Configuração SSH para nome de host lido do arquivo

Configuração SSH para nome de host lido do arquivo

A configuração é a seguinte:

  • Computador localdo qual eu quero fazer ssh…
  • Nó de gatewaygatewayque é um nó intermediário que é usado apenas para ssh em…
  • Nó frontalfront, novamente um nó intermediário, necessário para fazer ssh no final…
  • Nó de computação, que é o nó que eu realmente quero usar

Quero configurar minha configuração ssh local para que eu possa digitar diretamente ssh compute.

O problema:Ao contrário de gatewaye front, o nome do host do nó de computação não é estático (ou seja, pode mudar várias vezes em um dia). Eu tenho um script compute_node_hostname.shno frontqual irá gerar o nome do nó de computação, ou seja node339, . Como posso usá-lo na minha configuração?

A seguinte configuração simples com o nó de computação codificado funciona:

Host gateway front compute
    User …
    IdentityFile ~/.ssh/id_rsa

Host front
    HostName front
    ProxyJump gateway

Host compute
    HostName node339
    ProxyJump front

Limitação:Não consigo usar RemoteCommandna minha configuração

Responder1

Lembre-se de que 'ProxyJump' é uma versão mais inteligente de 'ProxyCommand' – ele faz algum trabalho adicional copiando as opções especificadas na CLI, mas essencialmente é o mesmo que:

Host compute
    ProxyCommand ssh -W %h:%p front

onde %he %psão automaticamente expandidos para o nome do host e porta solicitados.

Portanto, a maneira como você pode usar um nome de host dinâmico é substituindo o %hparâmetro:

Host compute
    ProxyCommand ssh -W $(compute_node_hostname.sh):%p front

Nota: Isso não funcionará bem com nós com chaves de host diferentes. Como você está se conectando por meio de outro host que já está na rede remota, deve ser seguro desabilitar a verificação da chave do host para este salto.

informação relacionada