Como faço para que o ssh-agent funcione em todos os terminais?

20

Eu configurei o login ssh automático (senha menos) para alguns servidores usando ssh-copy-id. ssh-agent funciona apenas no terminal em que foi executado. Como obtenho o ssh-add para trabalhar em todos os meus terminais?

Naturalmente, eu não preferiria a chave SSH sem uma frase secreta.

    
por Gowtham 26.05.2014 / 19:23

3 respostas

16

Se você estiver efetuando login em uma sessão gráfica, organize para iniciar ssh-agent durante a inicialização da sua sessão. Algumas distribuições já fazem isso por você. Se o seu não, organize para executar ssh-agent do seu script de inicialização da sessão ou do gerenciador de janelas. Como isso depende do ambiente de área de trabalho e do gerenciador de janelas. Por exemplo, se você iniciar o gerenciador de janelas manualmente, basta substituir a chamada por my_favorite_wm por ssh-agent my_favorite_wm .

Não inicie ssh-agent de .bashrc ou .zshrc , pois esses arquivos são executados em cada novo shell interativo. O local para iniciar o ssh-agent está em um arquivo de inicialização de sessão, como .profile ou .xsession .

Se você quiser usar o mesmo agente SSH em todos os processos, não importa de onde você tenha feito login, você pode fazer com que ele sempre use o mesmo nome de soquete, em vez de usar um soquete nomeado aleatoriamente. Por exemplo, você pode colocar isso no 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
    
por 27.05.2014 / 02:12
6

Você provavelmente deseja um programa como o Keychain , criado especificamente para esse fim. 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.
    
por 26.05.2014 / 20:24
4

Aplique-o ao seu ambiente de desktop ou gerenciador de janelas. Quando fiz isso manualmente no passado com um ~/.Xclients personalizado, 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 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), já que é ativo para todos os usuários, independentemente do DE / WM e o comando do processo pai é $HOME/.Xclients , mas esse arquivo não faz referência ssh-agent (enquanto /etc/X11/xinit/xinitrc-common faz).

Se você não tem um ~/.Xclients , você pode criar um com apenas uma linha, mas você precisa saber o comando que inicia seu DE / WM.

    
por 26.05.2014 / 19:49

Tags