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