PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : SSH Zugang nur mit Zertifikat erlauben?



X-Dimension
24.07.09, 17:09
Hallo,

ist es möglich den OpenSSH Server so zu konfigurieren, daß er eine Anmeldung nur erlaubt wenn man einen entsprechenden Public Key besitzt?

Ich nutze den Rechner um mich per FreeNX darauf anzumelden.
Dafür benötige ich einen Pub Key, ohne diesen komme ich nicht rauf.
SSH erwartet jedoch nur ein Passwort und das möchte ich abstellen.

quinte17
24.07.09, 17:36
ja es geht
http://lmgtfy.com/?q=sshd+public+key+only

rudelgurke
27.07.09, 01:05
Etwas hilfreicher als nur "schau bei Google":

http://susewiki.org/index.php?title=Public_Key_Authentication_with_SSH #Preparing_the_server

Dürfte soweit auch auf andere Distros zutreffen

X-Dimension
27.07.09, 18:36
@rudelgurke

Dankeschön! Genau das habe ich gesucht!

X-Dimension
28.07.09, 16:38
Wenn ich nach dem HowTo im Wiki gehe, erhalte ich das hier:



Agent admitted failure to sign using the key.
Permission denied (publickey,keyboard-interactive).


Was isn da los?

asi_dkn
28.07.09, 17:36
Deinen Public Key hast du generiert und der liegt auch im authorized_keys des Users (Server) mit dem du dich verbinden willst?

rudelgurke
28.07.09, 19:08
Mal einen Blick in /var/log/messages, /var/log/secure oder /var/log/auth werfen - auf dem Server.
Da dürfte SSHd etwas melden, es sei denn der Fehler liegt beim Client und da dürfte eigentlich nur mit dem Key etwas nicht in Ordnung sein.

X-Dimension
29.07.09, 08:14
Vielen Dank euch Beiden!
Ein Blick in die auth.log hat geholfen, die Datei authorized_keys hatte die falsche Berechtigung! Sie muss 0600 und nicht 0700 sein, wie im HowTo angegeben.

Die Anmeldung klappt nun per ssh wunderbar, jedoch kann ich mich nun nicht mehr mit meinem NX-Server verbinden.
Sobald ich Passwort authentifizierung wieder aktiviere, funktioniert auch NX wieder obwohl die Anmeldung bei NX eigentlich über einen DSA Schlüssel und nicht per Passwort erfolgt.

/dev/null_Peter
29.07.09, 11:44
... jedoch kann ich mich nun nicht mehr mit meinem NX-Server verbinden.

Ja, das ist bekannt.
Da bei mir "so gut wie alles was möglich ist" mit asymm. Schlüsseln oder Zertifikaten (*) abgesichert ist, ist in meinen sshd_config selbstverständlich auch die Benutzername/PW-Auth. immer deaktiviert.
Meine Bastellösung: zwei kleine Scripte, die abwechselnd eine sshd_conf_ssh oder eine sshd_conf_nx auf die sshd_config kopieren und den sshd neu starten. Ich nutze zwar nx sehr gern, aber so oft auch nicht, so dass ich damit leben kann.

Falls jemand eine bessere Lösung hat, her damit :-)

(*) Nur eine Bemerkung zu "Zertifikat" (s. Überschrift Thread)
Ein Z. ("X.509-Zertifikat") ist viel mehr als nur das hier verwendete asymm. Schlüsselpaar ... .

MfG Peter

rudelgurke
29.07.09, 14:23
Eventuell ein Problem mit den Keys ?

http://ubuntuforums.org/archive/index.php/t-449382.html

Zumindest die Lösung (im letzten Post) hat wohl geholfen :)

/dev/null_Peter
29.07.09, 19:58
Hi rudelgurke,

vielen Dank für den Hinweis.
Die Sache mit den unterschiedlichen Dateinamen für die zugelassenen öffentlichen Schlüssel habe ich schon bei meinen ersten Versuchen mit NX erkannt. Ich habe in allen drei config-Dateien (sshd_config, nx-server und -node) alle einheitlich auf authorized_keys und auch auf authorized_keys2 geändert. Restart beider Server, sogar Reboot => NX funktioniert erwartungsgemäß mit beiden Dateinamen (beide Dateien liegen natürlich auch jeweils 2x mit den jeweiligen Namen vor ...) wunderbar - solange "PasswordAuthentication yes" eingetragen ist. Stelle ich auf "no" um, geht es nicht mehr! ("Authentication failed for user peter")
Ansonsten hat meine sshd_config keine Besonderheiten, die daran Schuld sein könnten.

Naja, mit dem Script, welches dies jeweils umstellt geht es doch ... .

MfG Peter

rudelgurke
29.07.09, 20:37
Habe es so gemacht:

http://linux.derkeiler.com/Mailing-Lists/SuSE/2006-05/msg02799.html

Konfiguration natürlich angepasst und es funktioniert ganz wunderbar nur mit Pubkey

/dev/null_Peter
30.07.09, 21:50
Ich gebs auf ... . (Was bei mir selten vorkommt)

Wirklich alle Einstellungen, auch die, welche ich als absolut nicht relevant ansehe (z. Bsp. den Portwechsel auf :26) durchgeführt.

=> Es klappt (bei mir!) nur, wenn "PasswordAuthentication yes" steht, sonst nicht!
Die Verbindung des "Benutzers" NX funktioniert ja, nur für den echten Benutzer wird die PasswordAuth. verlangt.
Die plausibelste Ergänzung war mir 'ENABLE_SSH_AUTHENTICATION="1"' in der node.conf. Aber auch diese brachte nichts.

Den in deinem ersten Link (cwmoser) in der sshd_config stehenden Eintrag für die Lage der authorized_keys2 unter /usr/NX/home/nx/.ssh/ halte ich sogar für total falsch. Diese Datei gehört ja wohl in das /home des Nutzers und nicht des NX. So würde ja bei jedem Nutzer diese eine Datei verwendet werden - es müssten sämtliche public keys darin stehen - und jeder käme bei jedem rein ... . Trotzdem habe ich es so getestet, sogar mit allen pub keys darin.
OK, vielleicht ist mir irgendwann wieder mal nach testen :-)

Vielen Dank für deine Tipps, rudelgurke!

MfG Peter

JoergLang
01.08.09, 13:18
Hallo Peter,

also ich habe es wie folgt gemacht und es funktioniert:

1. Auf dem Client im Userverzeichnis das Verzeichnis .ssh angelegt und mit chmod 0700 die Berechtigung gesetzt.

2. Per ssh-keygen -t rsa ein Schlüsselpaar erzeugt, dass dann im userverzeichnis/.ssh liegt

3. ssh auf den Server, auf den ich nur mit Zertifikat kommen möchte

4. Auf dem Server im userverzeichnis das Verzeichnis .ssh anlegen

5. chmod 0700 .ssh setzen

6. Vom Client den id_rsa.pub Schlüssel in das Verzeichnis userverzeichnis/.ssh kopieren und in authorized_keys umbenennen.

7. Wichtig! Das File authorized_keys auf dem Server muss als Berechtigung 0600 haben!

Bis hierher konnte alles mit dem User gemacht werden, der sich auch auf dem Server mit Zertifikat anmelden möchte.

Jetzt muss man die Berechtigungen von root nutzen:

8. Auf dem Server in /etc/ssh/ssh_config die zeilen RSAAuthentication yes und IdentityFile ~/.ssh/id_rsa aktivieren, also das # am Zeilenanfang entfernen.

9. In /etc/ssh/sshd_config die Zeilen
RSAAuthentication yes
PubkeyAuthentication yes
AuthorizedKeysFile %h/.ssh/authorized_keys
ebenfalls aktivieren, ChallengeResponseAuthentication soll auf no stehen und UsePam auf yes .

10. service ssh restart und es sollte gehen. Zumindest hier tut es so ;)

JoergLang
01.08.09, 13:30
Ich versuche das Ganze auch für eine LinkStation mini zu nutzen und auch hier funktioniert es absolut nciht.
Hat da evtl. jemand schon Erfahrungen mit den Linkstations?

/dev/null_Peter
01.08.09, 14:45
Hallo Jörg,

Danke für deine ausführliche Anleitung.
(Mal ganz abgesehen davon, dass ich schon sehr lange mit ssh arbeite, die Schritte also für mich keine Unbekannten darstellten :-))

Du hast alles völlig korrekt beschrieben. Einige Einstellungen, die du extra aktiviert hast, sind sogar Defaultwerte, funktionieren also standardmäßig und auch mit dem Kommentarzeichen - aber das Entfernen schadet keinesfalls.

Ich habe zum Testen sogar als alte "Protokoll 1" zugelassen, was ja heute vermieden werden soll.

Aber das Ergebnis ist so, wie ich es schon 2x beschrieben habe:
PasswordAuthentication yes => NX funktioniert, und
PasswordAuthentication no => NX funktioniert eben nicht. "peter" kommt nicht rein, "nx" schon.

Und bei mir gilt die Regel, dass da wo eine Zertifikats- bzw. Pubkey- basierte Authentifizierung möglich ist, ein PW-Auth. nichts zu suchen hat ... .

MfG Peter

oziris
01.08.09, 16:54
Meine Bastellösung: zwei kleine Scripte, die abwechselnd eine sshd_conf_ssh oder eine sshd_conf_nx auf die sshd_config kopieren und den sshd neu starten. Ich nutze zwar nx sehr gern, aber so oft auch nicht, so dass ich damit leben kann.

Falls jemand eine bessere Lösung hat, her damit :-)
Ich kenne NX nicht, aber kann man das nicht vielleicht durch einen mit Key verschlüsselten Tunnel auf einen zweiten lokalen SSH-Server auf dem Zielhost umleiten, der lokale Hosts auch mit Passwort reinlässt? Also, dass man nur mit Key zu dem Server kommt der auch ein Passwort für dieses NX-Ding zulässt.

Hoffe, mein Vorschlag inspiriert Euch.

X-Dimension
01.08.09, 22:38
Das scheint ja eine ziemlich knifflige Angelegenheit zu sein.

-EDIT-
Ich werde bei Gelegenheit mal das hier testen:
http://wiki.centos.org/HowTos/FreeNX

/dev/null_Peter
02.08.09, 04:31
Guten Morgen allerseits,

ich habe die beiden Beiträge gelesen - vielen Dank - aber in einer halben Stunde rollen wir nach Dänemark.
Bewusst
- kein Telefon (Handy aus)
- kein Internet (zumindest kein eigenes, mal sehen, wie es mit WLAN aussieht ... .

Will sagen, klinke mich für drei Wochen hier aus.

MfG Peter

simplemodus
15.02.12, 20:36
Also ich wärme mal den Thread hier auf ...

Ich hab mir das durchgelesen und würde gerne wissen,
wie man beim ssh es so gestaltet, das man auf dem server
ein zertifikat generiert UND nur mittels diesem
zertifikat kann ich überhaupt mich mit user und passwort anmelden.
Am besten Step-by-step ... ich tipp drauf das ich was übersehe !

(es hat beim vorigen server funktioniert nur das
hab nicht ich konfiguriert und es
gibt keine aufzeichnungen ;( )

Danke lg C

TheDarkRose
28.02.12, 20:31
Den SSH-Key generierst du meist auf dem Client, überträgst den PublicKey auf dem Server und kannst dich ab dann mithilfe deines Keys einloggen, anstatt einem Passwort

simplemodus
29.02.12, 10:48
Thanks.
Und dann noch die sshd conf adaptieren.