PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : ssh mit authorized_keys



olc
24.08.06, 16:13
Hallo,

Ich versuche gerade, meine SSH Verbindungen testweise auf Zertifikat-Authentifizierung umzustellen. Nachdem ich die benötigten Schlüssel erzeugt habe

ssh-keygen -t rsa
und den öffentlichen Schlüssel in die Datei ~/.ssh/authorized_keys gepackt habe, versuche ich mich von einer Windows Kiste und dem rüberkopierten privaten Schlüssel mit WinSCP anzumelden. Leider bekomme ich dabei folgenden Fehler:


. 2006-08-24 16:59:29.085 --------------------------------------------------------------------------
. 2006-08-24 16:59:29.085 WinSCP Version 3.7.4 (Build 271) (OS 5.1.2600 Service Pack 2)
. 2006-08-24 16:59:29.085 Login time: Donnerstag, 24. August 2006 16:59:29
. 2006-08-24 16:59:29.085 --------------------------------------------------------------------------
. 2006-08-24 16:59:29.085 Session name: root@<HOSTNAME>
. 2006-08-24 16:59:29.085 Host name: HOSTNAME (Port: <PORT>)
. 2006-08-24 16:59:29.085 User name: root (Password: No, Key file: Yes)
. 2006-08-24 16:59:29.085 Transfer Protocol: SFTP (SCP)
. 2006-08-24 16:59:29.085 SSH protocol version: 2; Compression: No
. 2006-08-24 16:59:29.085 Agent forwarding: No; TIS/CryptoCard: No; KI: Yes; GSSAPI: No
. 2006-08-24 16:59:29.085 Ciphers: aes,blowfish,3des,WARN,des; Ssh2DES: No
. 2006-08-24 16:59:29.085 Ping type: -, Ping interval: 30 sec; Timeout: 15 sec
. 2006-08-24 16:59:29.085 SSH Bugs: -,-,-,-,-,-,-,-
. 2006-08-24 16:59:29.085 SFTP Bugs: -,-,-
. 2006-08-24 16:59:29.085 Proxy: none
. 2006-08-24 16:59:29.085 Return code variable: Autodetect; Lookup user groups: Yes
. 2006-08-24 16:59:29.085 Shell: default, EOL: 0
. 2006-08-24 16:59:29.085 Local directory: default, Remote directory: home, Update: No, Cache: Yes
. 2006-08-24 16:59:29.085 Cache directory changes: Yes, Permanent: Yes
. 2006-08-24 16:59:29.085 Clear aliases: Yes, Unset nat.vars: Yes, Resolve symlinks: Yes
. 2006-08-24 16:59:29.085 Alias LS: No, Ign LS warn: Yes, Scp1 Comp: No
. 2006-08-24 16:59:29.085 --------------------------------------------------------------------------
. 2006-08-24 16:59:29.148 Looking up host "<HOST>"
. 2006-08-24 16:59:29.148 Connecting to <HOST> port <PORT>
. 2006-08-24 16:59:29.163 Server version: SSH-2.0-OpenSSH_3.9p1
. 2006-08-24 16:59:29.163 We claim version: SSH-2.0-WinSCP_release_3.7.4
. 2006-08-24 16:59:29.179 Using SSH protocol version 2
. 2006-08-24 16:59:29.179 Doing Diffie-Hellman group exchange
. 2006-08-24 16:59:29.226 Doing Diffie-Hellman key exchange
. 2006-08-24 16:59:29.601 Host key fingerprint is:
. 2006-08-24 16:59:29.616 ssh-rsa 1024 <ID>
. 2006-08-24 16:59:29.616 Initialised AES-256 client->server encryption
. 2006-08-24 16:59:29.616 Initialised HMAC-SHA1 client->server MAC algorithm
. 2006-08-24 16:59:29.632 Initialised AES-256 server->client encryption
. 2006-08-24 16:59:29.632 Initialised HMAC-SHA1 server->client MAC algorithm
! 2006-08-24 16:59:29.632 Using username "root".
. 2006-08-24 16:59:29.648 Reading private key file "C:\Dokumente und Einstellungen\<USERNAME>\Desktop\id_rsa"
. 2006-08-24 16:59:29.648 Unable to use this key file (OpenSSH SSH2 private key)
! 2006-08-24 16:59:29.648 Unable to use key file "C:\Dokumente und Einstellungen\<USERNAME>\Desktop\id_rsa" (OpenSSH SSH2 private key)
. 2006-08-24 16:59:29.663 Password prompt from server (Password: )
. 2006-08-24 16:59:29.663 Asking user for response.
. 2006-08-24 16:59:39.183 Unable to authenticate
. 2006-08-24 16:59:39.199 Attempt to close connection due to fatal exception:
* 2006-08-24 16:59:39.214 Unable to authenticate
. 2006-08-24 16:59:39.214 Closing connection.
* 2006-08-24 16:59:39.214 (ESshFatal) Anmeldung fehlgeschlagen.
* 2006-08-24 16:59:39.214 Anmeldungsprotokoll (Siehe Sitzungsprotokoll für Details):
* 2006-08-24 16:59:39.214 Using username "root".
* 2006-08-24 16:59:39.230 Unable to use key file "C:\Dokumente und Einstellungen\<USERNAME>\Desktop\id_rsa" (OpenSSH SSH2 private key)
* 2006-08-24 16:59:39.230
* 2006-08-24 16:59:39.230 Unable to authenticate

In der sshd_config ist die RSA-Authentifizierung freigeschaltet.

Woran könnte der Fehler liegen? Probleme mit der Zeichencodierung beim Übertragen der Datei vielleicht? Ich habe den privaten Schlüssel mit WinSCP auf die Windows Kiste kopiert. Oder kennt jemand von Euch den Fehler?

Beachtet bitte nicht die Schlüssellänge und den Fakt, daß root sich anmelden darf etc.. Ist nur in der Testphase so...

Danke und Gruß
olc

IT-Low
24.08.06, 17:32
2006-08-24 16:59:29.648 Unable to use key file "C:\Dokumente und Einstellungen\<USERNAME>\Desktop\id_rsa" (OpenSSH SSH2 private key)

Schon mal ein anderes lokales id_{dsa,rsa}-Verzeichnis versucht?

Windoofsklicker
24.08.06, 17:34
WinSCP und Putty brauchen ein eigenes Format (ppk).
Such mal nach puttygen.exe.

olc
24.08.06, 17:41
Hallo,

danke für Eure Antworten.

@IT-Low
Wie meinst Du "anderes Verzeichnis"? Denkst Du, er hat Probleme mit den Leerzeichen? Dann würde er doch den gesamten Pfad nicht im Log anzeigen oder? Aber ich probiere es noch einmal mit einem anderen Pfad, ist ja eine Möglichkeit...

@Windoofsklicker
Mit PuTTYGEN hatte ich es vorher schon einmal probiert. Ich bekam die Fehlermeldung, daß der Schlüssel nicht akzeptiert wird... Ich dachte, daß es unter Umständen an der "Schlüsselart" liegt (da ja der ssh-keygen Key anders "gestrickt" ist als der von PuTTYGEN). Soll heißen, das läuft auch nicht.
Kann denn WinSCP überhaupt keine Schlüssel benutzen, die direkt mit ssh-keygen erzeugt wurden? Das würde echt Sinn machen, bei der Fehlermeldung...

Danke und Gruß
olc

Windoofsklicker
24.08.06, 19:36
Zwei Möglichkeiten:
- Key mit ssh-keygen erzeugen, dann mit Puttygen importieren und als ppk abspeichern
- Key mit Puttygen erzeugen und exportieren

bla!zilla
24.08.06, 23:08
Zwei Möglichkeiten:
- Key mit ssh-keygen erzeugen, dann mit Puttygen importieren und als ppk abspeichern
- Key mit Puttygen erzeugen und exportieren

Ich habe es bei mir auf dem ersten Weg gemacht. Funktioniert problemlos.

olc
25.08.06, 08:28
Hallo,

der erste Weg funktioniert bei mir auch einwandfrei. Vielen Dank!
Die Variante zwei läuft bei mir scheinbar nicht korrekt, mein mit PuTTY generierter Schlüssel wird nicht akzeptiert.

Wie ist das in diesem Zusammenhang mit der Zertifikatauthentifizierung unter SCPonly? Gibt es trotzdem eine Möglichkeit SCPonly Benutzer mit Zertifikaten anmelden zu lassen? Ich müßte ja die Schlüssel mit dem Useraccount erzeugen - nach der Enrichtung von SCPonly ist das Anmelden aber folgerichtig nicht mehr möglich. Gibt es noch einen anderen Weg die benötigten Zertifikate zu erzeugen? Aufgrund des Arbeitsaufwands möchte ich ungern an einem Dritt-PC unter Linux die Zertifikate erzeugen, um sie dann umzuwandeln bzw. zu importieren. Hat jemand eine Idee?

Danke nochmal und Gruß
olc

baumgartner
25.08.06, 08:54
- Key mit ssh-keygen erzeugen, dann mit Puttygen importieren und als ppk abspeichern

Der privatekkey heißt aber deshalb private key dass man ihn nicht irgendwo hin kopiert (andere Maschiene). Dafür gibts den Public key! Merke: " Jeder User hat einen private und einen public Key. Der private ist nur lokal und der public wird an die authorized_keys auf dem gewünschten Server(n) angehängt! "

Genauso intelligent ist es den privatekey einmal quer durchs Internet zu mailen, da hätt es dann ein Passwort auch getan :rolleyes:

baumgartner
25.08.06, 08:57
Wie ist das in diesem Zusammenhang mit der Zertifikatauthentifizierung unter SCPonly? Gibt es trotzdem eine Möglichkeit SCPonly Benutzer mit Zertifikaten anmelden zu lassen? Ich müßte ja die Schlüssel mit dem Useraccount erzeugen - nach der Enrichtung von SCPonly ist das Anmelden aber folgerichtig nicht mehr möglich. Gibt es noch einen anderen Weg die benötigten Zertifikate zu erzeugen? Aufgrund des Arbeitsaufwands möchte ich ungern an einem Dritt-PC unter Linux die Zertifikate erzeugen, um sie dann umzuwandeln bzw. zu importieren. Hat jemand eine Idee?


Wie wärs wenn du dir einfach ein Skript schreibst dass du auf den lokalen Rechnern nur einmal aufrufen musst und dir dort die keys erzeugt und diese dann gleich via ssh-copy-id auf die benötigten rechner kopiert?

olc
25.08.06, 09:23
Hallo,

mittels ssh-keygen ist es mir doch nicht möglich Schlüssel für andere User anzulegen oder irre ich mich da? Das Manual gibt mir dazu keine anderen Informationen... Und auf die Maschinen einloggen kann ich mich ja nicht mit dem entsprechenden User, da SCPonly das Login verhindert, indem es die Standard-Shell umbiegt.

Danke und Gruß
olc

Windoofsklicker
25.08.06, 10:23
Der privatekkey heißt aber deshalb private key dass man ihn nicht irgendwo hin kopiert (andere Maschiene). Dafür gibts den Public key! Merke: " Jeder User hat einen private und einen public Key. Der private ist nur lokal und der public wird an die authorized_keys auf dem gewünschten Server(n) angehängt! "

Genauso intelligent ist es den privatekey einmal quer durchs Internet zu mailen, da hätt es dann ein Passwort auch getan :rolleyes:

Aha... was machst du denn, wenn du dich per Key von verschiedenen Rechnern auf deinem Server einloggen willst? Ich habe ein Notebook, 'ne Workstation,...

Den Private Key auf einen Samba-Share legen? Nein, wohl eher auf einem sicheren Weg (SCP, PGP-Mail,...) auf die Rechner übertragen, auf denen du den Key brauchst.

Zudem heist der private Key so, weil er nicht über einen ungesicherten Weg übertragen werden darf, wie der public Key. Der einzig sichere Ort für diese wäre eh' eine SmartCard, aber ich schweife ab...

baumgartner
25.08.06, 10:31
Also wenn man ihn verschlüsselt überträgt geht das in Ordnung :-)

Ich hab bei mir auf jedem Rechner ein Schlüsselpaar und wenn ich z.B. mit meinem Laptop auch auf den Server XY möchte hänge ich den Publickey einfach an die authorized keys hinten dran.

So hat man dann auf jedem Rechner nur einen privatekey und nicht mehrere. Und die authorized_keys ist doch dafür da mehrere Schlüssel aufzunehemen (Darum wirds ja auch in der Mehrzahl geschrieben).

Oder hab ich hier irgendwo etwas total falsch verstanden?

olc
25.08.06, 16:21
Hallo,

um noch einmal zu meiner Frage zurück zu kommen :p :

Gibt es eine Möglichkeit die Zertifikate für SCPonly Benutzer zu erzeugen?

Die Erzeugung bzw. die Verwendung der Schlüssel mittels PuTTYGEN läuft bei mir (nach mehrmaligem Versuchen) leider nicht...

Gruß olc

Windoofsklicker
26.08.06, 09:29
Du musst die Schlüssel mit Puttygen erzeugen und _exportieren_.
Was genau hast du denn gemacht?

olc
26.08.06, 10:23
Ich habe die beiden Schlüssel mit PuTTYGEN generiert und exportiert.
Dann habe ich den öffentlichen Schlüssel per WinSCP auf den Remote PC kopiert und ihn per
cat id_rsa >> ~/.ssh/authorized_keys als authorisierten Schlüssel eingefügt und per
chmod 700 ~/.ssh -Rdie korrekten Rechte gesetzt.

Wenn ich dann versuche, mich mit dem Server per Schlüsselauthentifizierung zu verbinden bekomme ich die Meldung, daß mein Schlüssel vom Server nicht akzeptiert wurde.

Ich habe ein wenig im Netz herumgestöbert und gelesen, daß der Schlüssel, der bei der Erzeugung mittels PuTTYGEN in mehreren Zeilen steht, in der Datei "authorized_keys" nur in einer Zeile stehen darf. Das habe ich dann auch versucht, aber der Fehler war der gleiche.

Ich denke mal, daß ich irgend einen Fehler mache, aber ich komme nicht drauf welchen...

Dieses Vorgehen würde mir aber genau das ermöglichen, was ich realisieren möchte - nämlich eine Schlüsselverwaltung losgelöst von der lokalen Schlüsselgenerierung, so daß sich auch SCPonly Benutzer mittels Zertifikat authentifizieren können.

Danke und Gruß
olc

Windoofsklicker
26.08.06, 13:15
Schau mal in /var/log/secure, ob da noch was zu finden ist und poste doch mal deine sshd_config, evtl. hilft das weiter.

baumgartner
26.08.06, 14:07
cat id_rsa.pub >> ~/.ssh/authorized_keys

Du solltest mal den public_key anhängen und nicht den private_key ;)

olc
26.08.06, 15:02
Jau, stimmt. :eek:

Nein, mal im Ernst. Ich habe bloß den Namen im Post verrissen - ich habe natürlich den Public Key angehangen... ;)

@windoofsklicker: Ich gehe die Sache noch einmal Schritt für Schritt durch (zum 27x ;) ) und poste dann die Fehlermeldung.

Danke für die Hilfe.

Gruß olc

olc
26.08.06, 18:37
Hallo,

hier meine sshd_config:


# $OpenBSD: sshd_config,v 1.72 2005/07/25 11:59:40 markus Exp $
# This sshd was compiled with PATH=/usr/bin:/bin:/usr/sbin:/sbin

Port 46896
Protocol 2

HostKey /etc/ssh/ssh_host_rsa_key
HostKey /etc/ssh/ssh_host_dsa_key

KeyRegenerationInterval 1h
ServerKeyBits 1024

SyslogFacility AUTH
LogLevel INFO

LoginGraceTime 2m
PermitRootLogin yes
StrictModes yes
MaxAuthTries 3

RSAAuthentication yes
PubkeyAuthentication yes
AuthorizedKeysFile .ssh/authorized_keys

HostbasedAuthentication no
IgnoreRhosts yes

PasswordAuthentication no
PermitEmptyPasswords no

UsePAM yes

X11Forwarding no
Subsystem sftp /usr/lib/ssh/sftp-server

AcceptEnv LANG LC_CTYPE LC_NUMERIC LC_TIME LC_COLLATE LC_MONETARY LC_MESSAGES
AcceptEnv LC_PAPER LC_NAME LC_ADDRESS LC_TELEPHONE LC_MEASUREMENT
AcceptEnv LC_IDENTIFICATION LC_ALL

Ich habe wie beschrieben mittels PuTTYGEN beide Schlüssel erzeugt und exportiert, dann den öffentlichen Schlüssel per WinSCP auf den Remote-PC kopiert, die Datei ~/.ssh/authorized_keys angelegt, um ihn dort hinein zu kopieren. Dies passierte über "cat" (siehe oben).

Nachdem nun trotzdem keine Verbindung zu Stande kam, da ich folgende Fehlermeldung bekomme:
Server refused our key habe ich den Schlüssel so abgeändert, daß er in einer Zeile steht (einmal mit Space, einmal ohne) - keine Veränderung.

Die Rechte auf die Datei "authorized_keys" sind 600, die Rechte auf den "ssh"-Ordner lauten 700. Besitzer ist root:root.

Bei mir gibt es keine Datei /var/log/secure - ist ein openSuSE System. Das Logging erfolgt über syslog. In der entsprechenden Log-Datei sind keine Fehler oder Zeilen zu finden, die auf den Fehler hinweisen.

SSH-Version: OpenSSH_4.2p1, OpenSSL 0.9.8a 11 Oct 2005

Wie geht es weiter? ;)

Danke und Gruß
olc

Ixot
27.08.06, 10:55
UsePAM yes
Poste doch bitte mal deine /etc/pam.d/sshd. PAM kann manche Optionen aus der sshd_config aufheben.

olc
27.08.06, 12:26
Hallo meine /etc/pam.d/sshd sieht so aus (ist Systemstandard):


#%PAM-1.0
auth include common-auth
auth required pam_nologin.so
account include common-account
password include common-password
session include common-session
# Enable the following line to get resmgr support for
# ssh sessions (see /usr/share/doc/packages/resmgr/README)
#session optional pam_resmgr.so fake_ttyname

Aber wie gesagt: Mittels ssh-keygen-Schlüsseln läuft es, aber nicht mit PuTTYGEN-Schlüsseln.

Danke und Gruß
olc

Windoofsklicker
27.08.06, 13:08
Poste doch mal die authorized_keys. Da es der public key ist, kannst du das ja machen. Oder änder halt einige Zeichen, nur keine Leerzeichen/Zeilenumbrüche o.ä.

Was ist in /var/log/secure? War dort nichts zu finden?

olc
27.08.06, 13:21
Hallo,

meine ~/.ssh/authorized_keys enthält derzeit nur den PuTTYGEN Testschlüssel und sieht so aus:


---- BEGIN SSH2 PUBLIC KEY ----
Comment: "root"
AAAAB3NzaC1yc2EAAAALJQAAAIB69zrR6OycPv7BvW/tQtJFEM/bnW5FlUyX71Sl
eLvF/YXDzgMjuyjgGdQzUSDH0mf0bPFB6oM61obMG/BjKoSFfr3ALwBsB+CvAW9L
FJhG/f5V1Zp8pPJc2Zwi0LHvyVfYSkRpU6VKbwHOY/C+t/2ci6w7wEo7PaXyawsh
HFYc0w==
---- END SSH2 PUBLIC KEY ----


Was ist in /var/log/secure? War dort nichts zu finden?

Hatte ich oben schon etwas zu geschrieben. ;) Diese Datei gibt es bei mir nicht, da der Syslog die Daten erfasst (siehe oben).

Danke nochmal und Gruß
olc

Windoofsklicker
27.08.06, 15:59
Mach das mal so:

ssh rsa AAAB3NzaC1yc2EAAAALJQAAAIB69zrR6OycPv7BvW/tQtJFEM/bnW5FlUyX71SleLvF/YXDzgMjuyjgGdQzUSDH0mf0bPFB6oM61obMG/BjKoSFfr3ALwBsB+CvAW9L
FJhG/f5V1Zp8pPJc2Zwi0LHvyVfYSkRpU6VKbwHOY/C+t/2ci6w7wEo7PaXyawshHFYc0w==


Also ssh rsa vor den Key schreiben und keinen Zeilenumbruch in den Key.

olc
27.08.06, 16:20
Man, das ist es!

Mit einer zusätzlichen kleinen Änderung zu Deinem Vorschlag, nämlich "ssh-rsa" anstatt "ssh rsa", hat es geklappt.
Also doch alles in eine Zeile, nur ohne die "überflüssigen" Informationen.

Windoofsklicker - vielen Dank!

Danke und Gruß
olc