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
.