Respostas:
Quando o agente ssh frente está habilitado no cliente ( ForwardAgent yeson ~/.ssh/config) e também é habilitado no servidor remoto AllowAgentForwarding yes, ao fazer logon para o servidor remoto a variável de ambiente SSH_AUTH_SOCKdeveria existir. Então, se você fizer login em outro servidor (sua chave pública deve residir nesse terceiro servidor), não será solicitada nenhuma senha.
Esclarecer:
home$ ssh-add
Enter passphrase ...
Identity added ...
$ ssh hostA
hostA$ env | grep SSH_AUTH_SOCK
SSH_AUTH_SOCK=/tmp/...
$ ssh hostB
hostB$
ssh-addque fez o truque para mim. Eu trabalhava há meses sem saber disso. Depois, troquei os desktops do Unity para o LXDE e o encaminhamento de chave do agente parou de funcionar.
ssh-addsempre que abrir uma nova janela do console. Então, eu adicionei essa linha de comando ao final de ~/.bash_profilee agora o encaminhamento do agente de autenticação funciona sempre de forma transparente!
ssh-agentconfigurado corretamente. Veja mah.everybody.org/docs/ssh
"${SSH_AUTH_SOCK}"é um soquete, você pode testá-lo com #if [[ ! -S "${SSH_AUTH_SOCK}" ]]; then echo "warn: no forward agent detected ('${SSH_AUTH_SOCK}' is not a socket)"; fi
Verificar o ambiente SSH_AUTH_SOCKé bom para conexões ssh diretas.
Se você usar proxies ( proxy_command), poderá ter uma conexão parecida com:
local-> hostA-> hostB-> hostC->hostD
Se o encaminhamento do agente estiver ativo em todos esses hosts, SSH_AUTH_SOCKserá definido e "conterá" sua chave ssh localem todos os hosts.
Agora, suponha que o encaminhamento do agente esteja desativado, hostBmas ativado hostC. SSH_AUTH_SOCKserá ativado, hostDmas estará "vazio". Obviamente, o agente é encaminhado, mas apenas de hostCpara hostD. A corrente está quebrada.
Agora, para verificar se realmente a chave está disponível, hostDbasta ligar ssh-add. Ele sairá com o código 1 em qualquer caso, mas se a chave estiver indisponível, mostrará isso em stderr:
Não foi possível abrir uma conexão com seu agente de autenticação.
Assim, você pode verificar o SSH_AUTH_SOCKplus e garantir que ssh_addnão haja saída.
ssh-find-agentscript para encontrar e usar ssh-agents existentes, muito útil! O repositório tem alguns exemplos no README. Você poderá detectar se o ssh-agent está ativado dessa maneira, além de inspecionar os arquivos de configuração do SSH, em vez de examinar a saída do SSH.