No encaminhamento de credenciais SSH ( ssh -A
), o agente ssh remoto armazena as credenciais a serem encaminhadas ou o agente ssh remoto contata o agente ssh local para obter credenciais sob demanda, para cada solicitação?
Isso é importante em cenários como os seguintes: 1. ssh -A
para um host remoto, 2. Execute um script de longa duração que exija as credenciais SSH (talvez para scp
alguns recursos de outro lugar), 3. Desconecte-se do host remoto.
Se as credenciais estiverem armazenadas no controle remoto, isso pode ocorrer, caso contrário, o script falhará porque o agente ssh local pode não estar acessível após a desconexão.
O encaminhamento do agente SSH via
ssh -A
NÃO armazena a chave privada ( não criptografada) no sistema remoto. Em vez disso, ele configura um soquete no sistema remoto que é encapsulado de volta através da sessão ssh aberta para o usuário em execuçãossh-agent
no host de origem. A localização do soquete na extremidade remota será armazenada no valor da variável de ambienteSSH_AUTH_SOCK
e provavelmente será algo como:/tmp/ssh-HASH/agent.PID
Portanto, você não poderá fazer o que deseja usando o encaminhamento de agente no caso simples , mas, a menos que seu host de origem fique totalmente offline (por exemplo, seu laptop), você pode deixar uma conexão aberta apenas para fins de
ssh-agent
encaminhamento . Algo assim:(à parte: tentei isso com
ssh -fNTA ...
, mas não criaria o soquete do agente remoto, embora eu use isso ao encaminhar portas com sucesso - não sei por que ainda).CAVEAT : inerente ao design do encaminhamento do agente, qualquer pessoa com
root
privilégios no sistema remoto poderá ler suas chaves privadas não criptografadas de seu agente em seu sistema local/de origem por meio do soquete. É um risco, mas não um problema, e certamente melhor do que codificar senhas em arquivos.