Wie kann ich ssh-agent in allen Terminals zum Laufen bringen?
27
Ich habe die automatische (kennwortlose) SSH-Anmeldung bei einigen Servern mit der SSH-Kopier-ID eingerichtet. ssh-agentFunktioniert nur von dem Terminal aus, auf dem es ausgeführt wurde. Wie komme ich ssh-addan all meinen Terminals zur Arbeit?
Natürlich würde ich keinen SSH-Schlüssel ohne Passphrase bevorzugen.
Wenn Sie sich in eine grafische Sitzung einloggen, vereinbaren Sie, dass Sie ssh-agentwährend des Sitzungsstarts starten . Einige Distributionen erledigen das bereits für Sie. Wenn dies nicht der Fall ist, können Sie die Ausführung ssh-agentvon Ihrem Sitzungsstart-Skript oder von Ihrem Fenstermanager aus arrangieren . Wie Sie das tun, hängt von Ihrer Desktop-Umgebung und Ihrem Fenstermanager ab. Wenn Sie beispielsweise Ihren Fenstermanager manuell starten, ersetzen Sie einfach den Anruf my_favorite_wmdurch ssh-agent my_favorite_wm.
Beginnen Sie nicht ssh-agentaus .bashrcoder .zshrc, da diese Dateien von jedem neu interaktiv Shell ausgeführt werden. Der Startort ssh-agentist eine Sitzungsstartdatei wie .profileoder .xsession.
Wenn Sie denselben SSH-Agenten für alle Prozesse verwenden möchten, unabhängig davon, von wo Sie sich angemeldet haben, können Sie festlegen, dass er immer denselben Socket-Namen verwendet, anstatt einen zufällig benannten Socket zu verwenden. Zum Beispiel könnten Sie dies in Ihre einfügen ~/.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
Der Grund für die Überprüfung $? -ge 2ist, dass Exit-Code 1 ist, wenn der SSH-Agent keine Schlüssel hat, aber SSH-Agent bereits ausgeführt wird.
wisbucky
7
Sie möchten wahrscheinlich ein Programm wie Keychain , das genau für diesen Zweck entwickelt wurde. Von der Manpage:
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.
Dies funktioniert hervorragend, nachdem Sie die komprimierte Datei von Github heruntergeladen haben, stellen Sie sicher, dass Sie den vollständigen Pfad des unkomprimierten keychain-2.8.5-Verzeichnisses zu Ihrem ~ / .bash_profile-Export hinzufügen. PATH = $ PATH: line
Kevin Zhao
4
Wenden Sie es auf Ihre Desktop-Umgebung oder Ihren Fenstermanager an. Wenn ich dies in der Vergangenheit manuell mit einem Brauch gemacht habe ~/.Xclients, habe ich dies nur als letzte Zeile verwendet:
ssh-agent mywindowmanger
Es könnte einige DEs geben, die ihre eigenen Setup-Optionen dafür haben, obwohl es mir scheint, dass (zB) KDE dies nicht tut. Momentan scheint es, dass mein Code von /etc/X11/xinit/xinitrc-common(vermutlich von fedora) ausgeführt wurde, da er für alle Benutzer unabhängig von DE / WM und dem übergeordneten Prozessbefehl aktiv ist $HOME/.Xclients, aber diese Datei nicht referenziert ssh-agent(wohingegen dies der /etc/X11/xinit/xinitrc-commonFall ist).
Wenn Sie keine haben ~/.Xclients, können Sie eine mit nur dieser einen Zeile erstellen, aber Sie müssen den Befehl kennen, der Ihre DE / WM startet.
$? -ge 2
ist, dass Exit-Code 1 ist, wenn der SSH-Agent keine Schlüssel hat, aber SSH-Agent bereits ausgeführt wird.Sie möchten wahrscheinlich ein Programm wie Keychain , das genau für diesen Zweck entwickelt wurde. Von der Manpage:
quelle
Wenden Sie es auf Ihre Desktop-Umgebung oder Ihren Fenstermanager an. Wenn ich dies in der Vergangenheit manuell mit einem Brauch gemacht habe
~/.Xclients
, habe ich dies nur als letzte Zeile verwendet:Es könnte einige DEs geben, die ihre eigenen Setup-Optionen dafür haben, obwohl es mir scheint, dass (zB) KDE dies nicht tut. Momentan scheint es, dass mein Code von
/etc/X11/xinit/xinitrc-common
(vermutlich von fedora) ausgeführt wurde, da er für alle Benutzer unabhängig von DE / WM und dem übergeordneten Prozessbefehl aktiv ist$HOME/.Xclients
, aber diese Datei nicht referenziertssh-agent
(wohingegen dies der/etc/X11/xinit/xinitrc-common
Fall ist).Wenn Sie keine haben
~/.Xclients
, können Sie eine mit nur dieser einen Zeile erstellen, aber Sie müssen den Befehl kennen, der Ihre DE / WM startet.quelle