ssh-agent mit Passwörtern ohne zu viele Prozesse Laichen
Frage
Ich verwende ssh-agent mit kennwortgeschützten Schlüssel auf Linux. Jedes Mal, wenn ich in eine bestimmte Maschine einzuloggen, ich dies tun:
eval `ssh-agent` && ssh-add
Das funktioniert gut genug, aber jedes Mal, wenn ich mich anmelden und das tun, erstelle ich eine anderen ssh-agenten. Einmal in einer Weile, werde ich ein killall ssh-agent
sie zu ernten. Gibt es eine einfache Möglichkeit, den gleichen ssh-agent-Prozess in verschiedenen Sitzungen wieder zu verwenden?
Lösung
einen Blick auf Keychain haben. Es wurde b Menschen in einer ähnlichen Situation selbst geschrieben. Keychain
Andere Tipps
Wie viel Kontrolle haben Sie über diese Maschine? Eine Antwort wäre ssh-agent als Daemon-Prozess ausgeführt werden. Weitere Optionen sind auf dieser Webseite erklärt, im Grunde um zu sehen, testen, ob der Agent um ist und dann laufen sie es ist, wenn nicht.
Um eine der Ideen zu reproduzieren hier:
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
Sie können tun:
ssh-agent $SHELL
Dies wird dazu führen, ssh-agent, wenn die Shell beendet zu verlassen. Sie werden noch nicht über mehrere Sitzungen hinweg geteilt werden, aber zumindest werden sie gehen weg, wenn Sie tun.
Je nachdem, welche Shell Sie verwenden, können Sie verschiedene Profile für Login-Shells und nur regelmäßig neue Schalen gesetzt. In der Regel wollen Sie ssh-agent für Login-Shells, aber nicht für jeden Sub-Shell starten. In bash würden diese Dateien .bashrc
und .bash_login
, zum Beispiel.
Die meisten Desktop-Linux-Versionen in diesen Tagen ssh-agent für Sie ausführen. Sie fügen Sie einfach Ihre Schlüssel mit ssh-add und übermittelt dann die Schlüssel zu entfernten SSH-Sitzungen, indem Sie
ssh -A