
A configuração é a seguinte:
- Computador localdo qual eu quero fazer ssh…
- Nó de gateway
gateway
que é um nó intermediário que é usado apenas para ssh em… - Nó frontal
front
, 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 gateway
e 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.sh
no front
qual 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 RemoteCommand
na 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 %h
e %p
sã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 %h
parâ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.