Respostas:
Se você estiver fazendo login em uma sessão gráfica, planeje iniciar ssh-agent
durante a inicialização da sessão. Algumas distribuições já fazem isso por você. Se o seu não funcionar, organize a execução a ssh-agent
partir do script de inicialização da sessão ou do gerenciador de janelas. Como fazer isso depende do seu ambiente de trabalho e do seu gerenciador de janelas. Por exemplo, se você iniciar o gerenciador de janelas manualmente, basta substituir a chamada my_favorite_wm
por ssh-agent my_favorite_wm
.
Não inicie ssh-agent
de .bashrc
ou .zshrc
, pois esses arquivos são executados por cada novo shell interativo. O local para começar ssh-agent
é em um arquivo de inicialização da sessão como .profile
ou .xsession
.
Se você deseja usar o mesmo agente SSH em todos os processos, independentemente de onde você efetuou login, você pode sempre usar o mesmo nome de soquete, em vez de usar um soquete nomeado aleatoriamente. Por exemplo, você pode colocar isso em seu ~/.profile
:
export SSH_AUTH_SOCK=~/.ssh/ssh-agent.$HOSTNAME.sock
ssh-add -l 2>/dev/null >/dev/null
if [ $? -ge 2 ]; then
ssh-agent -a "$SSH_AUTH_SOCK" >/dev/null
fi
Você provavelmente deseja um programa como o Keychain , desenvolvido para esse fim exato. Na página do manual:
DESCRIPTION
keychain is a manager for ssh-agent, typically run from ~/.bash_profile.
It allows your shells and cron jobs to share a single ssh-agent process.
Aplique-o ao seu ambiente de desktop ou gerenciador de janelas. Quando eu fiz isso manualmente no passado com um costume ~/.Xclients
, usei isso como a última linha:
ssh-agent mywindowmanger
Pode haver alguns DEs com suas próprias opções de configuração para isso, embora me pareça que (por exemplo) o KDE não. Atualmente, parece que o meu foi executado via código de /etc/X11/xinit/xinitrc-common
(presumivelmente algo feito pelo fedora), pois está ativo para todos os usuários, independentemente do DE / WM e do comando do processo pai $HOME/.Xclients
, mas esse arquivo não faz referência ssh-agent
(ao contrário /etc/X11/xinit/xinitrc-common
).
Se você não tiver um ~/.Xclients
, poderá criar um com apenas essa linha, mas precisará conhecer o comando que inicia o seu DE / WM.
$? -ge 2
é feita é porque o código de saída 1 é quando o ssh-agent não possui chaves, mas o ssh-agent já está em execução.