Como faço para que o ssh-agent funcione em todos os terminais?
27
Eu configurei o login ssh automático (sem senha) em alguns servidores usando ssh-copy-id. ssh-agentfunciona apenas no terminal em que foi executado. Como faço ssh-addpara trabalhar em todos os meus terminais?
Naturalmente, eu não preferiria a chave SSH sem uma senha.
Se você estiver fazendo login em uma sessão gráfica, planeje iniciar ssh-agentdurante 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-agentpartir 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_wmpor ssh-agent my_favorite_wm.
Não inicie ssh-agentde .bashrcou .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 .profileou .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
Para sua informação, o motivo pelo qual a verificação $? -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.
wisbucky
7
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.
isso funciona muito bem, depois de baixar o arquivo compactado do Github, adicione o caminho completo do diretório keychain-2.8.5 descompactado ao seu ~ / .bash_profile export PATH = $ PATH: line
Kevin Zhao
4
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.Você provavelmente deseja um programa como o Keychain , desenvolvido para esse fim exato. Na página do manual:
fonte
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: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ênciassh-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.fonte