SSH Key an Server übergeben, ohne manuelle Passworteingabe

Krik

Fleet Admiral Pro
Registriert
Juni 2005
Beiträge
17.820
Moin,


auf einem Rechner mit CentOS 6 laufen zwei VMs (Fedora Core 3). Ich möchte, dass man sich über diese drei OS mit ssh bewegen kann, ohne Passwörter zu verwenden. Also flugs mit ssh-keygen -t rsa einen Satz Schlüssel erstellt.
Da Fedora noch kein ssh-copy-id kennt, muss ich den Public Key auf diese Art übertragen:
cat ~/.ssh/*.pub | ssh user@system 'umask 077; cat >>.ssh/authorized_keys'

Das soll aber automatisiert passieren, d. h. auf dem Host-OS legt jemand sein Passwort fest, dann wird der Satz Schlüssel generiert und muss automatisiert und ohne weitere Abfrage an die VMs übertragen werden.

Der letzte Teil ist das Problem. Wie bekomme ich das ohne weitere Passworteingabe hin? Bei den VMs zu Anfang ein Standardpasswort schon drin haben, das dann später per Skript geändert wird?
Habt ihr da vielleicht eine gute Idee?


Gruß, Laurin
 
Wie bekomme ich das ohne weitere Passworteingabe hin?
Indem du dich mit einem User einloggst, der auf den VMs schon einen Key hinterlegt hat? Hinterher noch die authorized_keys für den passenden User chownen, natürlich. ;)
(Wobei letzteres eigentlich relativ egal ist, solange der betreffende User Leserechte hat. Public Keys sind ja nichts, was übermäßig geschützt werden muss…)
 
Hm... klingt irgendwie kompliziert.

Geht irgendwie so etwas als Bash Skript?
read $PASS
passwd $USER << $PASS
ssh-keygen -t rsa
cat /home/$USER/.ssh/*.pub | ssh $USER@system 'umask 077; cat >>.ssh/authorized_keys' << $PASS


Ich bin in Bash nicht so gut bewandert.
 
Ok, das geht schon mal nicht. ssh nimmt über stdin keine Passwörter entgegen. Hm... Vorschläge?
 
Falls die Nutzernamen auf allen 3 "Rechnern" gleich sind und sowieso jeder Nutzer automatisiert auf alle 3 Rechner darf, möchtest du vielleicht gleich "host-based authentication" mit der ssh machen, statt mit einzelnen Keys für jeden Nutzer zu arbeiten. Dafür müssen nur einmal die public Host-Keys verteilt werden (in /etc/ssh/ssh_known_hosts eintragen) und in /etc/ssh/shosts.equiv die jeweils anderen beiden Hosts eingetragen werden.

Für die einzelnen Nutzer fällt keinerlei zusätzliche Konfiguration mehr an.

"man ssh" ... suchen nach "host-based authentication" ...
 
Zuletzt bearbeitet:
Expect - Das sieht SEHR brauchbar aus. Danke für den Tipp!

@mensch
Das soll ja alles automatisiert laufen. Der Bediener soll davon nichts mitbekommen, d. h. auch nicht extra für die Übertragung der Schlüssel das Passwort eintippen (sonst tippert er an der Stelle sehr oft das Passwort).
 
@mensch
Das soll ja alles automatisiert laufen. Der Bediener soll davon nichts mitbekommen, d. h. auch nicht extra für die Übertragung der Schlüssel das Passwort eintippen (sonst tippert er an der Stelle sehr oft das Passwort).
Wie gesagt: Um das zu realisieren, kannst du dir die Orgie mit den Key-Paaren für jeden einzelnen Nutzer komplett sparen. Was ich beschrieb, ist für genau deinen Anwendungsfall gedacht. Mit der einmalig konfigurierten "host-based authentication" kann ein frisch auf allen 3 Rechnern angelegter Nutzer (mit gleichem Loginnamen überall) sofort zwischen den 3 Rechnern per ssh ohne PW-Eingabe arbeiten. Keine Skripte nötig. Kein Key-Paar pro Nutzer nötig. Keine Key-Übertragung für neu angelegte Nutzer nötig. Keinerlei Konfiguration pro einzelnem Nutzer nötig.

Mit ssh ohne Passworteingabe durch die Gegend loggen geht eben nicht nur mit "public-key authentication", die du auf Krampf und mit viel Aufwand versuchst zu verwenden.
 
Zuletzt bearbeitet:
Hm, ok, da muss ich mal mitm Cheffe sprechen, ob das so i. O. geht. Die VMs sind nämlich vorgegeben; ich weiß nicht, ob ich an ihnen herumwerkeln darf.
 
Zurück
Oben