ssh identidades de configuração especificadas pelo IdentityFile não são encaminhadas pelo ForwardAgent

0

Eu trabalho em um ambiente onde eu tenho várias chaves ssh para múltiplos ambientes, que utilizam um host bastion, significando ssh para qualquer caixa em qualquer ambiente, é um hop de 2 passos, primeiro para o bastião, e o segundo para a caixa de destino, e minha identidade ssh tem que ser levada comigo o caminho todo.

Eu sei que tanto o ssh quanto o .ssh / config tem opções para encaminhar todas as suas identidades ssh atuais para o host bastion, de forma que você possa reutilizá-las lá:

ssh -A IPADDRESS e ForwardAgent

Além disso, eu sei que o .ssh / config tem a opção IdentityFile que me permite especificar qual chave ssh é usada, dependendo do host ao qual estou tentando me conectar. No entanto, o que tenho notado é que quaisquer identidades usadas pela opção IdentityFile não são encaminhadas pelo ForwardAgent - eu faço isso para o host de bastiões, mas sem minha chave e não consigo ssh para a próxima caixa.

A única maneira de conseguir isso até agora é adicionar manualmente a identidade que preciso usar com ssh-add ~/.ssh/id_rsa[1-10] e, em seguida, para ssh usando ForwardAgent ou ssh -A . No entanto, isso pode ser uma dor quando eu tenho muitas identidades que eu preciso alternar entre.

Existe uma maneira que eu possa realizar tudo isso usando apenas o arquivo de configuração ssh?

    
por Maxwell Jasper Flanders 19.04.2018 / 21:56

3 respostas

1

Você precisa:

IdentityFile ~/.ssh/id_bastion
AddKeysToAgent yes
ForwardAgent yes

Verifique man ssh_config | less +/AddKeysToAgent

    
por 19.04.2018 / 23:21
0

Você já tentou usar um ProxyCommand? Digamos que você queira se conectar como [email protected] seguindo de forma transparente a conta [email protected]. A seguinte configuração atinge apenas isso:

Host bastion.host
  User user1
  IdentityFile ~/.ssh/id_bastion

Host remote.host
  User user2
  IdentityFile ~/.ssh/id_remote
  ProxyCommand ssh bastion.host -W %h:%p 

Outra boa propriedade dessa configuração é permitir que outros comandos (como git, sshfs, rsync, ...) se conectem ao remote.host "diretamente" através do host bastion, usando as mesmas credenciais.

edit: Na sua configuração, cada host compartilha o mesmo bastião, de modo que você pode incluir o ProxyCommand em um host curinga antes de adicionar os mais específicos:

Host remote.*
  ProxyCommand ssh bastion.host -W %h:%p
Host remote.host1
  IdentityFile ...
Host remote.host2
   ....
    
por 19.04.2018 / 22:52
0

Uma maneira mais simples de fazer o ProxyCommand acima é usar ProxyJump ; sua configuração SSH será algo como isto:

Host bastion.host
  User user1
  IdentityFile ~/.ssh/id_bastion

Host remote.host
  User user2
  IdentityFile ~/.ssh/id_remote
  ProxyJump bastion.host 
    
por 17.05.2018 / 16:50