Tente usar a opção -A
para encaminhar a conexão do agente de autenticação, algo assim:
ssh -A serverA 'bash -s' < deploy.sh
O servidor A precisa se conectar através de svn + ssh ao Servidor B para pegar alguns arquivos de origem para implantação no Servidor A. Meu script de implementação é executado a partir da minha máquina local de desenvolvimento via:
ssh serverA 'bash -s' < deploy.sh
Eu tenho um par de chaves pública / privada sem senha entre o Servidor A e o Servidor B. Quando faço login em uma sessão local para o Servidor A, tenho a configuração de chaves e as conexões svn + ssh para o Servidor B não são um problema. O script deploy.sh é executado com êxito no Servidor A a partir de uma sessão local. No entanto, quando o SSH entrar na minha caixa dev o mesmo script não será executado remotamente.
Como eu chamo o ssh-agent do meu script de implantação para que o Servidor B aceite conexões dele quando executo os comandos remotamente no Servidor A?
Tente usar a opção -A
para encaminhar a conexão do agente de autenticação, algo assim:
ssh -A serverA 'bash -s' < deploy.sh
Ou, melhor ainda, adicione-o ao seu ~/.ssh/config
para que ele afete todas as conexões iniciadas pelo usuário ou use-o por host ou adicione-o à configuração do cliente ssh em todo o sistema. Dessa forma, todos os aplicativos que usam o ssh serão beneficiados, e você terá que manter a configuração em apenas um lugar.
Veja também o trecho da página de manual do ssh:
-A Enables forwarding of the authentication agent connection. This can also be specified on a per-host basis in a configuration file.
Agent forwarding should be enabled with caution. Users with the ability to bypass file permissions on the remote host (for the agent's
UNIX-domain socket) can access the local agent through the forwarded connection. An attacker cannot obtain key material from the agent,
however they can perform operations on the keys that enable them to authenticate using the identities loaded into the agent.