chave SSH em várias máquinas com encadeamento SSH

0

Eu gostaria de poder usar o ssh em várias máquinas usando o sinalizador -A no ssh como: ssh -A usuário @ hostB ssh -A usuário @ hostC

Isso funciona bem em cenários onde eu tenho chaves SSH, permitindo-me ir da minha máquina (hostA) para hostB e, em seguida, as chaves que vão de hostB para hostC. Mas e se eu quiser ser capaz de ir de A para C, mas não permitir comunicações baseadas em chave de B para C? Existe uma maneira que eu possa passar a chave ao longo do pipe SSH sem realmente armazenar e deixar essa chave na máquina B?

    
por user910861 01.06.2018 / 18:44

1 resposta

1

Is there a way that I can pass they key along the SSH pipe without actually storing and leaving that key on machine B?

A chave nunca deixa sua máquina local em primeiro lugar. A opção -A apenas permite que os clientes no hostB e hostC enviem solicitações para assinar dados de volta ao seu agente ssh local. (A autenticação SSH funciona usando seu par de chaves para fazer assinaturas digitais.)

(Tecnicamente eles podem enviar qualquer comando ssh-agent, incluindo "list keys" ou "add new key" .No entanto, não há comando para extrair a chave privada ou qualquer outra informação sensível. )

No entanto, se hostB for completamente não confiável (e você não quiser que ele tenha a capacidade de enviar solicitações de autenticação), use uma abordagem diferente: execute o segundo cliente localmente e encaminhe o protocolo SSH através do "pipe" SSH. Desta forma, os hosts intermediários só verão conversas criptografadas.

O método mais simples (no OpenSSH 7.3 e posterior) é a opção ProxyJump:

ssh -J user@hostB user@hostC

Outras opções são -o ProxyCommand="ssh -W %h:%p user@hostB" ou túneis TCP estáticos via -L .

    
por 01.06.2018 / 18:55