Você pode usar o encaminhamento de agentes: inclua ForwardAgent yes na configuração do lado do cliente ( ~/.ssh/config ) ou use a opção de linha de comando -A . (Esse recurso pode ser desabilitado no lado do servidor ( AllowAgentForwarding in sshd_config ), mas isso é útil somente para contas restritas que não podem executar comandos shell arbitrários.) Dessa forma, todas as chaves de sua máquina local estão disponíveis no sessão remota. Observe que ativar o encaminhamento do agente no lado do cliente tem implicações de segurança: ele fornece ao administrador do computador remoto acesso às chaves (por exemplo, se você estiver em A e tiver uma chave para B e uma chave para C e ativar o encaminhamento de agente) em sua conexão com B, então isso permite que B acesse suas chaves e, portanto, faça o login em C).
Se você quiser disponibilizar o agente de sua sessão X na máquina do escritório nas sessões SSH de casa, será necessário definir a variável de ambiente SSH_AUTH_SOCK para apontar para o mesmo arquivo da sessão X. É fácil de fazer manualmente:
export SSH_AUTH_SOCK=/tmp/ssh-XXXXXXXXXXXX/agent.12345
em que XXXXXXXXXXXX é uma cadeia aleatória e 12345 é o PID do processo do agente. Você pode automatizar isso facilmente se houver um único agente em execução ( find /tmp -maxdepth 1 -user $USER -name 'ssh-*' ), mas detectar qual agente você deseja se houver diversos é mais complicado.
Você pode extrair o valor de SSH_AUTH_SOCK de um processo em execução. Por exemplo, no Linux, se o seu gerenciador de janelas for o Metacity (o gerenciador de janelas padrão do Gnome):
env=$(grep -z '^SSH_AUTH_SOCK=' /proc/$(pidof -s metacity)/environ')
if [ -n "$env" ]; then export "$env"; fi
Como alternativa, você pode configurar sua máquina de escritório para usar um único agente SSH. Se o agente for iniciado automaticamente quando você efetuar login, na maioria das distribuições, ele não será iniciado se já houver uma variável chamada SSH_AUTH_SOCK no ambiente. Portanto, adicione uma definição de SSH_AUTH_SOCK ao seu ~/.profile ou ~/.pam_environment e inicie manualmente ssh-agent , se ainda não tiver sido iniciado em .profile :
export SSH_AUTH_SOCK=~/.ssh/$HOSTNAME.agent
if [ -z "$(pgrep -U "$USER" ssh-agent)" ]; then
ssh-agent >/dev/null
fi