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 -J
ou ProxyJump
to 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:
- Copie o arquivo-chave para a pasta .ssh do bob2 no bastion.
- 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.