[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

TIPP: ssh-agent abgestorben: So wieder beleben



Symptom
-------
Plötzlich fragen alle möglichen Kommandos, die
ssh benutzen, nach der "passphrase" des SSH-Schlüssels
und das Kommando::

    ssh-add -l

liefert plötzlich::

 Could not open a connection to your authentication agent.

und bei anschliessendem Anschauen der Prozess-Liste
stellt sich heraus, dass der Prozess "ssh-agent"
„verschwunden“ ist.  Das ist sehr lästig, wenn man 
gerade „tief“ in der Arbeit steckt und ein gutes
Dutzend Terminals auf hat, mit denen man auch per
SSH auf andere Rechner zugreifen möchte.

Tipp
----
Wer das Abmelden und komplette Neuaufbauen der Sitzung
vermeiden will, kann dann dieses kleine Shell-Skript 
hier benutzen:

-------8<-----schnipp-schnapp-----8<--------8<--------8<-------
#!/usr/bin/env bash
set -o errexit

if [ -z "$SSH_AUTH_SOCK" ] 
then >&2 echo "can't revive agent: SSH_AUTH_SOCK not set"
     exit 1
fi

SSH_AUTH_DIR=$(dirname $SSH_AUTH_SOCK)
if [ ! -d $SSH_AUTH_DIR ] 
then mkdir $SSH_AUTH_DIR 
else rm -f $SSH_AUTH_SOCK
fi
chmod go-rwx $SSH_AUTH_DIR
ssh-agent -a $SSH_AUTH_SOCK
ssh-add
------->8-----schnapp-schnipp----->8-------->8-------->8-------

Ich habe das unter dem Namen "restart_ssh_agent" in meinem
$HOME/bin Verzeichnis abgelegt.

Erklärung
---------
In Desktop-GUI-Sitzungen gibt es eine Umgebungs-Variable
$SSH_AUTH_SOCK, die normalerweise beim Start der Sitzung
mit Hilfe der Ausgabe des ssh-agent gesetzt und an alle 
Prozesse weiter „vererbt“ wird.  Dieses "Socket" soll wieder
benutzt werden.

Credits
-------
https://bugs.launchpad.net/ubuntu/+source/openssh/+bug/99065

Weil ich eine ganze Weile gebraucht hatte, um diesen
Workaround zu finden, habe ich das hier beschrieben.

Viele Grüße, Peter Funk
-- 
Peter Funk, home: ✉Oldenburger Str.86, D-27777 Ganderkesee
mobile:+49-179-640-8878 phone:+49-421-20419-0 <http://www.artcom-gmbh.de/>
office: ArtCom GmbH, ✉Haferwende 2, D-28357 Bremen, Germany


Reply to: