SSH de A a B para C, usando a chave privada em A

2

Este é o meu cenário:

  • O host C não está acessível em A
  • O host B está acessível em A
  • O host C está acessível em B
  • Ambos B e C têm ~/.ssh/id_rsa.pub (de A) em authorized_keys
  • B não possui a chave privada ( ~/.ssh/id_rsa ), pois seria um risco de segurança (a chave é pessoal).
  • uma vez que B não possui a chave privada, não é possível fazer login no C a partir dele

Como posso usar a chave no host A para fazer o login no host C? Isso é possível? Eu não temo.

(semelhante, mas diferente de esta questão )

EDITAR

O que eu preciso é uma maneira de fornecer on-the-fly (stdin ou similar), a chave privada para o ssh hop em B, sem nunca tocar o sistema de arquivos em B. Isso é possível?

    
por dangonfast 09.10.2018 / 12:43

2 respostas

5

Se você estiver usando uma versão recente do OpenSSH, basta digitar:

ssh -J B C

Se você estiver usando uma versão um pouco mais antiga sem -J support, poderá usar uma sintaxe um pouco mais elaborada:

ssh -o ProxyCommand='ssh -W %h:%p B' C

Se você precisar disso toda vez que você usar ssh de A para C, pode ser útil adicionar uma entrada em seu arquivo .ssh/config com esta aparência (em versões recentes):

Host C
   ProxyJump B

Ou assim (em versões ligeiramente mais antigas):

Host C
   ProxyCommand ssh -W %h:%p B

Usando um dos itens acima, você pode simplesmente digitar ssh C para abrir a conexão. Isso é particularmente útil quando você está usando ssh indiretamente por meio de uma das muitas ferramentas que utilizam ssh para seu transporte. Nem todas essas ferramentas fornecem uma maneira simples de passar sinalizadores de linha de comando para o comando ssh .

    
por 09.10.2018 / 14:19
0

Isso é bastante fácil. Basta usar o encaminhamento de agentes (opção -A no ssh).

Amostra:

#On machine A use
ssh -A user@<machine_B>
#Then on machine B use
ssh -A user@<machine_C>

Não há necessidade de copiar chaves particulares em todo o lugar. -A encaminha somente quaisquer solicitações do Agente SSH para a primeira máquina na cadeia, portanto, uma chave privada na máquina A pode ser usada contanto que você não alterne usuários em máquinas intermediárias.

Se você alterar seu usuário na máquina B (por exemplo, com um su foo para o usuário foo), o encaminhamento do agente não funcionará mais, já que a próxima conexão é feita como usuário foo com suas próprias chaves.

    
por 09.10.2018 / 13:40