• Willkommen im Linux Club - dem deutschsprachigen Supportforum für GNU/Linux. Registriere dich kostenlos, um alle Inhalte zu sehen und Fragen zu stellen.

[gelöst]bashscript mit ssh-agent fragt nach passphrase

ich hab ein bashscript geschrieben das alle Clients durchgeht und die drives unmounted und wieder mounted.
ich benutze den ssh-agent um die Passphrase einzugeben doch leider muss ich bei einem Rechner die Passphrase erneut eingeben.

Der Rechner bei dem dies passiert ist ein Suse 11.0 mit einem anderen Schlüssel (dsa-key) aber gleicher Passphrase
die anderen Rechner sind 9.3 bis 10.3 und benutzen einen RSA-key. Kann ich dem ssh-agent nun irgendwie mitteilen das er die passphrase für beide schlüssel verwendet?

Code:
#! /bin/sh
#########################################################################
#																		#
#	Alle EZ Rechner remounten                                     
#																		#
#########################################################################

. /usr/local/bin/lbl-admin/hosts/all_hosts



function usage
{
	echo "Usage: $0 [-h 'host'|ez]"
}


if [ "$#" -le 1  ]
then
    usage
    exit 1
fi;

while [ "$#" -gt 0 ]
do
    case $1 in
        -h ) shift
            TARGET=$1
            shift
            ;;
         * ) usage
            exit 1
    esac
done

case $TARGET in
    ez)
        HOSTS=$EZ_HOSTS
       ;;
    *)
        HOSTS=$TARGET
       ;;
esac

eval `ssh-agent`
ssh-add

(
for i in $HOSTS
do
ping -c 1 -w 3 $i 1>/dev/null

	if [ $? == 0 ]
	then
		echo "Server $i is online"
		echo "remounting drives.."
		ssh $i 'umount -a' &>/dev/null
		ssh $i 'mount -a' &>/dev/null
	else
		echo "$i is offline"
	fi
done
)
#kill ssh-agent
ssh-agent -k
 
Hallo Emanuele,

wieso erzeugst du nicht für jeden Rechner ein Schlüsselpaar und tauschst die öffentlichen Schlüssel mit dem Server aus?
Dann brauchst du keine Passphrasen mehr.

Ich habe allerdings einen Fall im Hinterkopf, dass eventuell was in der ssh.config geändert werden muss. Auf einem Rechner (Solaris) war der Zugang mit dem Public Key geblockt. Allerdings kann ich mich nicht mehr an den Parameter erinnern. Wenn du es nicht schaffst kann ich nochmal nachgucken.

Gruß
Georg
 
Emanuele schrieb:
ich hab ein bashscript geschrieben das alle Clients durchgeht und die drives unmounted und wieder mounted.

Wofür soll das gut sein?

Emanuele schrieb:
Der Rechner bei dem dies passiert ist ein Suse 11.0 mit einem anderen Schlüssel (dsa-key) aber gleicher Passphrase
die anderen Rechner sind 9.3 bis 10.3 und benutzen einen RSA-key. Kann ich dem ssh-agent nun irgendwie mitteilen das er die passphrase für beide schlüssel verwendet?

Das geht nicht. Hast du auf dem 11.0 Rechner eine Identity für den User?

Statt mit umount und mount solltest du mount mit der Option -o remount veranlassen, einen Remount durchzuführen.
 
wieso erzeugst du nicht für jeden Rechner ein Schlüsselpaar und tauschst die öffentlichen Schlüssel mit dem Server aus?
Dann brauchst du keine Passphrasen mehr.

Ich darf keinen Schlüssel verwenden der ohne passphrase arbeitet.

Wofür soll das gut sein?
Wenn der nfs-server restartet wird können die clients nicht mehr auf die mounts zugreifen. Also muss ich die mounts remounten. Oder wenn der Server nach einer Umstellung neu gestartet wird. Die 17 Clients einzeln durchzugehen hat mich schon beim ersten mal gestört.

Das geht nicht. Hast du auf dem 11.0 Rechner eine Identity für den User?

Ich habe auf dem 11.0 nur den key in authorized_keys stehen keine identity da ich ja von dem aus nicht verbinde. Oder was meinst du?

Ich musste einen neuen Key erstellen für das 11.0er da der alte key nicht mehr funktioniert. Warum weiss ich nicht aber es geht nicht. Mit dem neuen Key kann ich mich verbinden hab aber jetzt das Problem das die anderen Clients alte Keys und der 11.0er den neuen Key verwendet. So ein heterogener mist. Ich müsste alles auf 11.0 umstellen.

kann man denn nicht mit ssh-add die passphrase von zwei keys speichern?

Statt mit umount und mount solltest du mount mit der Option -o remount veranlassen, einen Remount durchzuführen.
muss ich da noch das -a hinzufügen damit die fstab abgearbeitet wird? also
Code:
mount -o remount -a
 
1. Ein Server wird nicht einfach mal so runtergefahren oder umgestellt. (Was auch immer du mit umstellen meinst)
2. Wenn müssen die Remounts auf der Clientseite erfolgen und nicht auf der Serverseite. Die Clients mounten die Freigaben vom Server und nicht umgekehrt.

Was verstehst du unter einem heterogenen Netzwerk??? Doch wohl nicht das, was du geschrieben hast (... heterogener Mist).

Ein heterogenes Netzwerk besteht aus Servern und Clients, die nicht das gleiche OS verwenden. Z.B. ein Linux Server der Freigaben für Windows Clients bereitstellt.

Ein Linux<->Linux Netzwerk ist kein heterogenes Netzwerk, egal welche Distribution verwendet wird.
 
ich muss diesen Thread nochmal hochholen. Natürlich habe ich an dem Problem weitergearbeitet.
Ich habe festgestellt das der Key und der ssh-agent ein Problem haben.

Wenn ich mit ssh-add ~/.ssh/id_dsa den key direkt auswähle erhalte ich folgende FEhlermeldung
Code:
Bad key file: ~/.ssh/id_dsa: Success

Was zum Henker bedeutet das? Ich habe gedacht der Key ist villeicht "defekt" also habe ich einen neuen erstellt und damit das Problem reproduziert. Es kommt die gleiche Fehlermeldung.

Außerdem kann ich mich mit dem key auch wunderbar auf die Rechner verbinden da gibt es keine Probleme nur beim ssh-add kommt die Fehlermeldung.
Wenn ich ssh-add auf ~/.ssh/identity mache gehts wunderbar.
Kann da ein Problem mit dem dsa-key vorhanden sein? Auf dem Rechner läuft openSuse 7.0
 
Ich habe eine etwas unschöne Lösung gefunden.
Ich habe eine 2048bit RSA schlüssel generiert und den auf den 11.0er maschienen verteilt. Dort habe ich dann das Protokoll auf 1 runtergestellt und in der Config
/etc/ssh/sshd_config
Code:
Protocol 1
RSAAuthetication=yes
PublicKeyAuthentication=yes
AuthorizedKeysFile    .ssh/authorized_keys

Dann einen neustart von ssh mit
Code:
rcsshd restart

Danach habe ich den ssh-client konfiguriert dass es beide RSA-Schlüssel verwendet.
/etc/ssh/ssh_config
Code:
IdentityFile ~/.ssh/identity
IdentityFile ~/.ssh/identity2

Dann habe ich
Code:
ssh-add ~/.ssh/identity
ssh-add ~/.ssh/identity2
im script verwendet.

Jetzt wird zwar die Passphrase am Anfang zweimal abgefragt aber dafür ist dann das updaten von knapp 20 Rechnern problemlos möglich.
Ich hätte es schön gefunden wenn ich nicht das Protokoll von 2 auf 1 downgraden müsste.
Das ist aber das Einzige das mich stört.
 
Oben