Risposte:
Se accedi a una sessione grafica, organizza l'avvio ssh-agent
durante l'avvio della sessione. Alcune distribuzioni lo fanno già per te. In caso contrario, esegui l'esecuzione ssh-agent
dallo script di avvio della sessione o dal gestore delle finestre. In che modo dipende dall'ambiente desktop e dal gestore di finestre. Ad esempio, se avvii il gestore delle finestre manualmente, sostituisci semplicemente la chiamata my_favorite_wm
con ssh-agent my_favorite_wm
.
Non iniziare ssh-agent
da .bashrc
o .zshrc
, poiché questi file vengono eseguiti da ogni nuova shell interattiva. Il punto di partenza ssh-agent
è in un file di avvio della sessione come .profile
o .xsession
.
Se si desidera utilizzare lo stesso agente SSH su tutti i processi, indipendentemente da dove si è effettuato l'accesso, è possibile farlo utilizzare sempre lo stesso nome socket, anziché utilizzare un socket denominato in modo casuale. Ad esempio, potresti metterlo nel tuo ~/.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
Probabilmente vuoi un programma come Keychain , che è stato progettato per questo preciso scopo. Dalla pagina man:
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.
Applicalo al tuo ambiente desktop o gestore di finestre. Quando l'ho fatto manualmente in passato con un'abitudine ~/.Xclients
, l'ho usato solo come ultima riga:
ssh-agent mywindowmanger
Potrebbero esserci alcuni DE che hanno le proprie opzioni di configurazione per questo, anche se mi sembra che (es.) KDE no. Attualmente, sembra che il mio sia stato eseguito tramite codice da /etc/X11/xinit/xinitrc-common
(presumibilmente qualcosa fatto da fedora), poiché è attivo per tutti gli utenti indipendentemente da DE / WM e il comando del processo padre lo è $HOME/.Xclients
, ma quel file non fa riferimento ssh-agent
(invece lo /etc/X11/xinit/xinitrc-common
fa).
Se non si dispone di un ~/.Xclients
, è possibile crearne uno con solo quella riga, ma sarà necessario conoscere il comando che avvia DE / WM.
$? -ge 2
è perché il codice di uscita 1 è quando ssh-agent non ha chiavi, ma ssh-agent è già in esecuzione.