SSH - Austausch der Public Keys zum passwordlosen Einloggen

saintjoe

Bodybuilder
Warnung
Das Einloggen ohne Passwort kann mitunter ein Sicherheitsrisiko darstellen.

Sinn der Sache
Viele haben zu Hause (oder sonstwo) mehrere Rechner, auf denen ein SSH-Daemon läuft - sei es zur Verwaltung des Rechners oder sonstigem. Jedoch kann es, wenn man sich oft auf den Maschinen einloggen muss, mitunter recht nervig werden, jedesmal das Passwort einzutippen.
Der Austausch der Public-Keys schafft hier Abhilfe.

Vorgehen
In meinem Beispiel arbeite ich jetzt erstmal mit dem imaginären User bob, welcher einen Account sowohl auf rechner1.domain.bla als auch auf rechner2.domain.bla hat.
rechner1.domain.bla ist der Rechner, am dem bob sitzt, auf rechner2.domain.bla loggt er sich mehrmals täglich per SSH ein.

Der erste Schritt ist, für bob auf rechner1.domain.bla ein Key-Pair zu erstellen:
Code:
[email]bob@rechner1.domain.bla[/email] [~]$ ssh-keygen -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (/home/bob/.ssh/id_rsa):
Created directory '/home/bob/.ssh'.
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /home/bob/.ssh/id_rsa.
Your public key has been saved in /home/bob/.ssh/id_rsa.pub.
The key fingerprint is:
1f:66:ea:96:83:16:6c:aa:be:1c:71:56:55:5b:e9:da [email]bob@rechner1.domain.bla[/email]

Als nächster Schritt loggt bob sich auf rechner2.domain.bla ein, und überprüft, ob das Verzeichnis .ssh in seinem Homedirectory exisitiert. Wenn nicht, erstellen. Ausloggen.
Dann, als bob an rechner1.domain.bla in das Verzeichnis ~/.ssh wechseln und folgendes eingeben:
Code:
cat id_rsa.pub | ssh [email]bob@rechner2.domain.bla[/email] "cat >> .ssh/authorized_keys"
Man wird jetzt ein letztes Mal nach dem Passwort gefragt.
Wenn das alles erledigt ist, kann bob sich von rechner1.domain.bla einfach mit
Code:
ssh [email]bob@rechner2.domain.bla[/email]
auf rechner2.domain.bla ohne Passwort einloggen.

Hoffe, dass Beispiel lässt sich einigermassen umsetzen ;)

Gruß
 
Oh weh, ich sehe die DAUs schon kraeftig am Schluessel erzeugen, und das ganze ohne Passphrase.

Waere besser du haettest auf ssh-agent(1) verwiesen. Dann muss man die Passphrase pro Sitzung auch nur einmal eingeben.

Private Schluessel ohne Passphrase....tssss, als naechstes kommt wohl root login?
 
Hmmm, *mich oute* ich hab das in meinem internen Netz so fuer meinen 08/15 User schon lang. Gut, auf dem Gateway sollte man solche Scherze unterlassen, aber ansonsten seh ich da kein Problem. Und wenn ich einen Rechner abbauen muss kommt die Passphrase wieder rein.

Und ob da n Service der sich die Passphrase speichert besser is sei mal dahin gestellt.
 
Wenn man die Passphrase sowieso jedesmal eingeben muss, kann man es doch auch gleich sein lassen, und sich normal anmelden... ;)
Wenn man ssh-agent laufen hat, kann man den root acc auf dem zweiten rechner auch gleich ohne pw laufen lassen ;)

ne, war nen Scherz, ist mir einfach zu unsicher das ganze.

Trotzdem Danke für das Tutorial, hab wieder was gelernt...
:)
 
Ich hab hier grad das Buch "linux Server Hacks" vor mir liegen.
In dem wird auch dazu geraten, wenn man sich öfters in einen Rechner einloggen muss, dies per
public-key zu tun. Gleich wie im HowTo wird ein leere(s/r)? Phass-Phrase benutzt.

Ist die Gefahr grösser, dass Jemand mir auf die Finger schaut, oder jemand an meinen Schlüssel kommt?

Hier hat es doch einige Admins, die sich bestimmt auch mehrmals am Tag/Stunde mit ssh arbeiten.
Wie geht ihr vor?
Wie sieht es mit unbekannten Umgebungen aus? Bringt hier der Schlüssel etwas oder sollte man ganz
darauf verzichten da irgendwelche sniffer/keylogger mitlaufen könnten?

Thx
 
Der Key sollte immer ein Passwort haben!!!!!!!!!!!!!!!!!!!!!!

Damit man das Passwort nicht immer wieder neu eingeben muss, kann man den ssh-agent verwenden.

Alles andere ist aus meiner Sicht "grob fahrlässig" ! ;)

Gruß,

Ice
 
Zuletzt bearbeitet:
Die Zeit vergeht, die Ansichten ändern sich :)
Was 02.2003 bis 08.2004 aus einem machen kann.....

- Key mit (langer, unhandlicher, schlecht zu merkender) Passphrase
- Login per pam_ssh gegen den ssh-key anstatt dem Login (oder beides)
- pam_ssh setzt dann gleich den ssh-agent auf wodurch man sich spätere Keyeingabe erspart
- sudo für unkritische administrative alltagsgeschäfte, streng umrissen
- für größere Arbeiten dann 'su' und das hat pam_opie mit in seiner konfiguration
 
Was habe ich dann von dem public-key, wenn ich doch noch ein Passwort eingeben muss?

Ist mit ssh-agent das tool hier gemeint?
http://www.phil.uu.nl/~xges/ssh/

PS: wenn ich gdm benutze, wo muss ich dann pam_ssh.so aktivieren?
In /etc/pam.d/system oder /etc/pam.d/passed ?

Danke
 
Zuletzt bearbeitet:
Es gibt allgemein 3 Wege zur Authentifizierung:
etwas das du weißt, etwas das du hast, etwas das du bist. Jeweils 2 dieser 3 Optionen sollten zutreffen.
Von dem Ort in obigem Link bin ich kein Fan.

Passwort - etwas das du weißt.
Priv/Pub-Keys - etwas das du hast.
verschlüsselte Priv/Pub-Keys mit Passphrase - etwas das du hast & etwas das du weißt.

Den entschlüsselten Private-Key merkt sich der ssh-agent und kann dich damit danach überall authentifizieren. Einmal Passwort eingeben pro Session. Das sollte verkraftbar sein.

Dein ssh-agent Link ist nur ein grafischen FrontEnd für das was ich meine. ssh-agent gehört eigentlich standardmäßig zu jeder OpenSSH Installation.
 
Da viele das mit dem ssh-agent nicht ganz verstehen, hier nochmal ganz deutlich: Man muss die Passphrase nur einmal eingeben, dann wird der Schluessel dekodiert und im Speicher gehalten. Solange bis man den ssh-agent wieder beendet (also spaetestens beim reboot). Da man das ganze mit pam_ssh verbandeln kann, kann man sich sogar die Passworteingabe fuer den normalen xdm/login-Login sparen.

Hier nochmal mein Setup.
- /etc/pam.d/xdm - die pam_ssh Sachen auskommentiert und want_agent gesetzt.
- Login per xdm mit user/passphrase (ich muss also zum Anmelden nur die Passphrase meines priv. Schluessels eingeben und auch nur einmal)
- Schnelle ssh-logins bis ich mich aus X wieder abmelde (also erst wenn ich ins Bett gehe :)

So kann man auch bequem per ssh arbeiten. Viele machen bestimmt eine ssh-session auf, geben 2-3 Befehle ein und melden sich wieder ab. Gerade mit dem ssh-multiplexing, dass in OpenBSD 3.6 verfuegbar ist, kann man aber direkt so arbeiten:

ssh server ps aux
ssh server ls /root
ssh server /usr/local/etc/rc.d/foo.sh stop
...
 
Ich muss sagen, ich finde die Sache sehr praktisch.
Ich hab leider noch keine Zeit gehabt, mir das mit pam_ssh anzuschauen, da ich gdm benutze, aber hört sich wirklich klasse an. Muss ich dabei eigentlich das gleich PW nehmen, wie das, welches mein UNIX-Accoutn hat?
Wie läuft das ganze wenn ich mir mehrere Schlüssel mache? Ich sollte ja nicht auf jedem PC den gleichen nehmen (oder doch?) welchen sucht sich dan pam_ssh?

Das Ganze wär doch was fürs Wiki oder?
 
Zurück
Oben