Come faccio a far funzionare ssh-agent in tutti i terminali?


27

Ho impostato l'accesso automatico (meno password) ssh ad alcuni server usando ssh-copy-id. ssh-agentfunziona solo dal terminale in cui è stato eseguito. Come faccio ssh-adda lavorare in tutti i miei terminali?

Naturalmente, non preferirei la chiave SSH senza passphrase.

Risposte:


26

Se accedi a una sessione grafica, organizza l'avvio ssh-agentdurante l'avvio della sessione. Alcune distribuzioni lo fanno già per te. In caso contrario, esegui l'esecuzione ssh-agentdallo 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_wmcon ssh-agent my_favorite_wm.

Non iniziare ssh-agentda .bashrco .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 .profileo .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

Cordiali saluti, il motivo per cui controlla $? -ge 2è perché il codice di uscita 1 è quando ssh-agent non ha chiavi, ma ssh-agent è già in esecuzione.
Wisbucky

7

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.

piace davvero questo!
Colin D,

Grande! grazie. Funziona perfettamente.
Qualcuno

funziona benissimo, dopo aver scaricato il file compresso da Github, assicurati di aggiungere il percorso completo della directory keychain-2.8.5 non compressa alla tua esportazione ~ / .bash_profile PATH = $ PATH: line
Kevin Zhao

4

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-commonfa).

Se non si dispone di un ~/.Xclients, è possibile crearne uno con solo quella riga, ma sarà necessario conoscere il comando che avvia DE / WM.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.