Como fazer ssh para um servidor via bastion(proxy) com chave do bastion(proxy) NOT origin

Como fazer ssh para um servidor via bastion(proxy) com chave do bastion(proxy) NOT origin

Então, estou essencialmente tentando fazer isso:

ssh [email protected] -t ssh bob2@test-vm

o acima funciona bem se eu apenas colocá-lo no terminal, mas estou tendo dificuldades para tentar replicá-lo por meio do arquivo de configuração .ssh.

Aqui está o que tenho dentro do arquivo de configuração:

Host bastion
     HostName 35.192.152.35
     User bob2

Host test-vm
     User bob2
     FOrwardAgent yes
     ProxyCommand ssh bastion nc %h %p 2> /dev/null

No entanto, surge um erro dizendo "permissão negada", arquivo de chave pública inválido? Eu descobri o acima neste post: https://unix.stackexchange.com/questions/124078/how-to-ssh-to-a-server-using-another-server-with-key-from-the-second-server

De alguma forma funcionou para o cara, mas não parece funcionar para mim. Também tentei permitir o encaminhamento de agente e o encaminhamento de TCP na configuração sshd_chroot em todas as partes (origem, bastião e servidor), mas isso não fez diferença.

se eu forçar a especificação dos caminhos de identidade:

Host bastion
     HostName 35.192.152.35
     User bob2
     IdentityFile /Users/bob/.ssh/id_rsa

Host test-vm
     User bob2
     FOrwardAgent yes
     ProxyCommand ssh bastion nc %h %p 2> /dev/null
     IdentityFile /home/bob2/.ssh/id_ed25519

Aí aparece o mesmo erro, além de dizer que não conseguiu encontrar o diretório "/home/bob2/.ssh/id_ed25519"

Alguém tem alguma ideia?

Responder1

Depois de perceber que os bastiões servem para derrotar firewalls de rede e não para armazenar chaves, você pode mudar isso para uma solução de 2 comandos com configuração mínima.

Em A, sua máquina local, certifique-se de ter um agente ssh em execução.

Execute um comando único para B, onde B tem a seguinte configuração:

Host B
        ForwardAgent yes
        User proxyuser

E execute o seguinte comando:

$ ssh B ssh-add # and possibly a reference to a non-standard key

Neste ponto, seu agente ssh local terá a chave remota em seu cache.

Depois, um simples -Jou ProxyJumpto C'simplesmente funcionará':

Host C
        User user
        ProxyJump proxyuser@B

$ ssh C

Com a pequena inconveniência de um comando extra único, você pode manter sua configuração bastante sã, IMO.

Você pode se perguntar se armazenar a chave no bastião realmente oferece segurança extra caso ela seja armazenada em cache na sua máquina local de qualquer maneira. É claro que há um pequeno benefício emnãoter a chave armazenada no disco, mas se sua máquina local for hackeada não há muita diferença na leitura de um arquivo ou na comunicação com um agente ssh carregado com chaves.

Responder2

Parece que você deseja que sua configuração deixe test-vm procurar a chave no bastião. Então eu sugiro:

  1. Copie o arquivo-chave para a pasta .ssh do bob2 no bastion.
  2. adicionarComando Proxycom ssh-add em sua configuração.

Responder3

Abaixo funciona para mim ... Quase igual ao seu, exceto que especifico o endereço IP do destino final (talvez não seja relevante no seu caso) eTIVE QUE COPIARa chave do bastião para meu host local, pois meu ssh_config está encontrando arquivos-chave aqui, não no meio do bastião:

==== added to .ssh/config ====
Host mybastion
    HostName 133.35.41.9
    User bastuser
    IdentityFile /Users/bchapman/.ssh/bast_priv.key

Host mytarget
    HostName 109.0.1.38
    ProxyCommand ssh -q -W %h:%p mybastion
    User targuser
    IdentityFile /Users/bchapman/.ssh/targ_priv.key
==============

Depois disso, posso ssh mytarget, scp localfile mytarget:, etc.

informação relacionada