Vários saltos do SSH ForwardAgent

15

Estive procurando uma solução para o seguinte problema nas últimas 2 horas, sem sorte.

Desenvolvimento:

Estou usando a autenticação de chave pública para conectar-me aos meus servidores. Eu uso o encaminhamento ssh-agent para não precisar gerenciar chaves públicas / privadas.

Digamos que eu tenho servidores A, B and C.

Isso funciona muito bem se eu me conectar LOCAL ---> A ---> B.

Também funciona muito bem se eu fizer LOCAL ---> A ---> C.

Agora, se eu tentar LOCAL ---> A ---> B ---> C, o SSH não poderá se conectar B to C.

Vale a pena notar: eu me conecto ao servidor A como liquidez, enquanto eu me conecto ao servidor B como raiz. Conectar-se ao servidor B como liquidez corrige o problema, mas essa não é uma opção para mim.

Conforme a recomendação de um usuário, eu uso ssh -Acada vez para garantir que o encaminhamento do agente esteja ativado.

Encontrei uma pergunta semelhante, sem resposta aqui: É possível encadear o encaminhamento de ssh-agent através de vários saltos?

De acordo com o @Zoredache aqui: /server//a/561576/45671 Eu só preciso ajustar a configuração do meu cliente em cada sistema intermediário. O que eu acredito que sim.

liquidez
fonte
Considere usar o ProxyCommandsalto (como explicado aqui ) em vez de encaminhar o agente SSH. Para sua abordagem, você terá que confiar em todas as máquinas da cadeia, pois elas podem (ab) usar suas chaves privadas. Eu também gosto muito da abordagem ProxyCommand muito melhor, porque a verificação de hosts conhecidos é feita localmente e, além disso, você pode configurar a cadeia na sua configuração SSH para poder usar um único comando para se conectar ao C.
gertvdijk
Infelizmente, não posso usar um proxyCommand. Apesar das considerações de segurança, eu realmente preciso usar o forwardAgent.
liquidez
@ liquidez posso perguntar por que você não quer usar proxyCommand? Eu tenho o mesmo problema e, pelo que entendi, o proxyCommand é mais seguro. Então, eu estou pensando qual usar ..
grep

Respostas:

13

Para que o encaminhamento do agente funcione através de vários saltos, basta ajustar a configuração do cliente em cada sistema intermediário para que o encaminhamento do agente.

Pode ser tão simples quanto garantir que você /etc/ssh/ssh_configtenha isso configurado. Mas se você tiver configurações por cliente, ~/.ssh/configpoderá ser necessário ajustar essas configurações também.

Host *
    ForwardAgent yes

Você pode ver se o encaminhamento do agente ocorreu ou se houve um erro, se você acabou de adicionar a -vopção.

$ ssh -v issc@server1
OpenSSH_5.9p1 Debian-5ubuntu1.1, OpenSSL 1.0.1 14 Mar 2012
debug1: Reading configuration data /home/zoredache/.ssh/config
...
debug1: Requesting authentication agent forwarding.
debug1: Sending environment.
Linux server1 3.11-0.bpo.2-amd64 #1 SMP Debian 3.11.8-1~bpo70+1 (2013-11-21) x86_64

The programs included with the Debian GNU/Linux system are free software;
the exact distribution terms for each program are described in the
individual files in /usr/share/doc/*/copyright.

Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent
permitted by applicable law.
Last login: Sun Dec 15 20:39:44 2013 from 10.2.4.243
issc@server1:~$

Verifique também se você tem um conjunto de variáveis ​​de ambiente válido.

issc@server1:~$ export | grep SSH_AUTH
declare -x SSH_AUTH_SOCK="/tmp/ssh-7VejOmKtNv/agent.57943"
Zoredache
fonte
4
Vale mencionar o sinalizador -A para ssh como uma alternativa rápida e suja para a opção ssh_config ou ~ .ssh / config. -A [e] permite o encaminhamento da conexão do agente de autenticação.
dmourati
1
Em cada etapa, você pode usar ssh-add -lpara listar as chaves que o ssh pensa que pode obter através do seu agente. Certifique-se de encaminhar em cada conexão!
MikeyB
Obrigado! Observe também que, se tudo tiver sido feito corretamente, você não precisará iniciar manualmente o ssh-agent no último servidor. Ele começará automaticamente se você vir a linha Requesting authentication agent forwarding.na sua saída de depuração. Se você tentou .bash_profileiniciar o ssh-agent, remova-o de lá ou o seu agente será iniciado novamente sem nenhuma identidade.
2upmedia 17/10/19