ssh-agent con password senza generare troppi processi
Domanda
Uso ssh-agent con chiavi protette da password su Linux. Ogni volta che accedo a un determinato computer, lo faccio:
eval `ssh-agent` && ssh-add
Funziona abbastanza bene, ma ogni volta che eseguo l'accesso e faccio questo, creo un altro agente ssh. Di tanto in tanto, farò un killall ssh-agent
per raccoglierli. C'è un modo semplice per riutilizzare lo stesso processo ssh-agent in sessioni diverse?
Soluzione
dai un'occhiata a Keychain. È stato scritto b persone in una situazione simile a te stesso. Keychain
Altri suggerimenti
Quanto controllo hai su questa macchina? Una risposta sarebbe quella di eseguire ssh-agent come processo daemon. Altre opzioni sono spiegate su questa pagina web , fondamentalmente test per vedere se l'agente è in giro e poi eseguendolo se non lo è.
Per riprodurre una delle idee qui:
SSH_ENV="$HOME/.ssh/environment"
function start_agent {
echo "Initialising new SSH agent..."
/usr/bin/ssh-agent | sed 's/^echo/#echo/' > "${SSH_ENV}"
echo succeeded
chmod 600 "${SSH_ENV}"
. "${SSH_ENV}" > /dev/null
/usr/bin/ssh-add;
}
# Source SSH settings, if applicable
if [ -f "${SSH_ENV}" ]; then
. "${SSH_ENV}" > /dev/null
#ps ${SSH_AGENT_PID} doesn’t work under cywgin
ps -ef | grep ${SSH_AGENT_PID} | grep ssh-agent$ > /dev/null || {
start_agent;
}
else
start_agent;
fi
Puoi fare:
ssh-agent $SHELL
Questo causerà l'uscita di ssh-agent all'uscita della shell. Non saranno ancora condivisi tra le sessioni, ma almeno andranno via quando lo fai.
A seconda della shell utilizzata, è possibile impostare diversi profili per le shell di accesso e semplici nuove shell. In generale, si desidera avviare ssh-agent per le shell di login, ma non per ogni subshell. In bash questi file sarebbero .bashrc
e .bash_login
, per esempio.
La maggior parte dei Linux desktop in questi giorni esegue ssh-agent per te. Basta aggiungere la chiave con ssh-add e quindi inoltrare le chiavi alle sessioni ssh remote eseguendo
ssh -A