Forum: Mikrocontroller und Digitale Elektronik ssh keys auf raspberry pi verständnisproblem


von Chandler B. (chandler)


Lesenswert?

Hallo,
ich habe doch noch etwas verständnisprobleme bei einer verschlüsselten 
Übertragung. Ich habe einen PC mit Windows und einen Raspberry Pi, wo 
ich daten Austauschen möchte. Dazu habe ich zunächst auf dem Pi noch 
einen Benutzer angelegt.
Ich bin hier nach vorgegangen
https://pimylifeup.com/raspberry-pi-ssh-keys/

Ich habe mit PuTTYgen ein schlüsselpaar erzeugt (privater key und public 
key).
den public key musste ich dann auf dem Raspberry pi Speichern?
Warum den public key? ich denke, der ist für die Personen, die drauf 
zugreifen wollen und der Private key sollte auf dem Pi gespeichert 
werden?

Nun ja, habe ich jetzt mal so gemacht (also den Public key auf dem Pi 
gespeichert).
Wenn ich jetzt in WinSCP oder Putty mich einfach verbinden möchte, (also 
einfach nur adresse, benutzername und passwort) werde ich mti dem Pi 
verbunden. (wozu dann der Schlüssel?)
Wenn ich aber unter Putty den Privaten Key eingebe und mich dann 
verbinden möchte, bekomme ich in der Konsole die Ausgabe
Server refused our key
Verbunden bin ich dann aber trotzdem.

Wenn ich in WinSCP den privaten key eingebe, und den neuen benutzer, 
werde ich ohne Warnung verbunden (oder die Warnung wird nur nicht 
ausgegeben, oder ich habe diese nicht gesehen).

Aber warum muss ich den Privaten key immer eingeben?
Ich bin davon ausgegangen, dass ich einen Privaten schlüssel habe, 
welcher auf dem Pi ist und von diesem mehrere public schlüssel machen 
kann, welche ich quasi verteilen kann, womit sich dann andere drauf 
schalten können.

von Mork (Gast)


Lesenswert?

Chandler B. schrieb:
> den public key musste ich dann auf dem Raspberry pi Speichern?
> Warum den public key? ich denke, der ist für die Personen, die drauf
> zugreifen wollen und der Private key sollte auf dem Pi gespeichert
> werden?

Der private Key bleibt immer bei Dir und darf niemals irgendwo hin 
gesendet werden. Das ist quasi Deine Identität - Dein Personalausweis.
Die Gegenstellen, bei denen Du Dich mit Deinem private Key 
authentifizieren willst, erhalten den public key.
Dazu muss er in der ~/.ssh/authorized_keys eingetragen werden.
In dieser Datei dürfen auch mehrere public keys stehen... das ist 
sozusagen die Gästeliste der geladenen Personen.
Nur wer einen passenden Personalweis mitbringt (und auf der Gästeliste 
steht) darf rein.

In puttygen wird Dir der openssh-pubkey angezeigt. Den Inhalt des Feldes 
überträgst Du dann 1:1 in die authorized_keys auf Deinem Raspberry Pi.

Auf Windows PCs (Du sagtest WinSCP...) brauchst du dann normalerweise 
auch noch einen SSH Agent. (pagent aus dem Putty Verzeichnis)

Der kennt dann Deinen privaten Schlüssel und kümmert sich um die 
Authentifizierung.

Das andere Verhalten, was Du da beschreibst, hab ich nicht ganz 
verstanden... Ohne das richtige Schlüsselpaar solltest Du keinen Zugriff 
erhalten. Es sei denn, Du gibst zusätzlich das Passwort an oder WinSCP 
hat das Passwort gespeichert (was übrigens keine gute Idee ist, da der 
Passwortspeicher von WinSCP nicht sicher ist.)

von Chandler B. (chandler)


Lesenswert?

Mork schrieb:
> Das andere Verhalten, was Du da beschreibst, hab ich nicht ganz
> verstanden... Ohne das richtige Schlüsselpaar solltest Du keinen Zugriff
> erhalten. Es sei denn, Du gibst zusätzlich das Passwort an oder WinSCP
> hat das Passwort gespeichert (was übrigens keine gute Idee ist, da der
> Passwortspeicher von WinSCP nicht sicher ist.)

In der sshd_config war
PasswordAuthentication yes auskommentiert (damit trotzdem wahrscheinlich 
aktiv).
habe es auf no geändert und das # entfernt. Jetzt kann ich mich gar 
nicht mahr anmdelden

Putty:
No supported authentication methods available (server sent: publickey)

WinSCP:
Anmeldungsprotokoll (siehe Sitzungsprotokoll für Details):
Benutzername „pi“ wird verwendet.
Der entfernte Rechner hat unseren Schlüssel abgelehnt.

Der Grund ist klar. Zumindest hat WinSCP eine Eindeutige Aussage 
gemacht.
Aber den Public key hatte ich schon in authorized_keys  eingetragen.

Mork schrieb:
> Der private Key bleibt immer bei Dir und darf niemals irgendwo hin
> gesendet werden. Das ist quasi Deine Identität - Dein Personalausweis.
> Die Gegenstellen, bei denen Du Dich mit Deinem private Key
> authentifizieren willst, erhalten den public key.

Das heißst, wenn ich mehrere Benutzer (verschiedene Rechner habe), muss 
ich mehrere Schlüsselpaare erzeugen. Dabei jeden public key in 
authorized_keys  eintragen und die privaten keys rausgeben?
Das ist aber verwirrend. Dann sind die ja doch nicht mahr soo privat

von Frank M. (ukw) (Moderator) Benutzerseite


Lesenswert?

Chandler B. schrieb:
> Dabei jeden public key in authorized_keys  eintragen und die privaten
> keys rausgeben?

Rausgeben an die anderen Gäste: ja. Du hast für diese je einen 
Personalausweis "gedruckt".

> Das ist aber verwirrend. Dann sind die ja doch nicht mahr soo privat

Du siehst das aus der falschen Perspektive. Der öffentliche Server ist 
der Pi, der sieht nur die öffentlichen Schlüssel - mehr nicht. Jeder 
Gast (User) hat einen privaten Schlüssel, der auch bei ihm verbleibt.

Wenn Du jetzt für die User die privaten Schlüssel erzeugst und dann an 
die Gäste rausgibst, statt die User diese Schlüssel selbst erzeugen zu 
lassen, verletzt Du eigentlich deren Privatsphäre - ja. Schließlich 
kennst Du ja dann ihre privaten Schlüssel. Das ist eigentlich nicht Sinn 
und Zweck der Sache.

Richtig wäre:

1. Jeder User erzeugt sich selbst das Schlüsselpaar
2. Jeder User sendet seinen öffentlichen Schlüssel an Dich als Admin
3. Du als Admin trägst die öffentlichen Schlüssel beim Pi ein.

Dabei bleibt die "Privatsphäre" gewahrt. Den Inhalt der privaten 
Schlüssel kennen dann nur die User selbst.

von Mork (Gast)


Lesenswert?

Chandler B. schrieb:
> Das heißst, wenn ich mehrere Benutzer (verschiedene Rechner habe), muss
> ich mehrere Schlüsselpaare erzeugen. Dabei jeden public key in
> authorized_keys  eintragen und die privaten keys rausgeben?
> Das ist aber verwirrend. Dann sind die ja doch nicht mahr soo privat

Nein, wenn Du mehrere Benutzer - also mehrere Personen - hast, die 
Zugriff auf Deinen Raspberry erhalten sollen, dann müssen sich diese 
Personen ihr eigenes Schlüsselpaar erzeugen und Dir den public key 
zuschicken, so dass Du ihn auf dem Raspberry Pi hinterlegen kannst.

Wenn Du als einzelne Person nur von mehreren Rechnern aus auf Deinen 
Raspberry zugreifen willst, dann solltest Du optimalerweise trotzdem 
weiterhin nur EIN Schlüsselpaar besitzen.
In diesem Fall musst Du dann Deinen private Key auf einem sicheren Weg 
auf die anderen Rechner bringen.

Wenn Du der Infrastruktur vertrauen kannst, dann kannst Du sie dort 
natürlich einfach hinkopieren. Wenn es sich um fremde Rechner handelt, 
bzw. Rechner, auf die noch jemand anderes Zugriff hat, dann kann man den 
private Key z.B. auch auf einem USB Stick speichern und bei Bedarf dort 
verwenden, wo Du ihn brauchst.

von Chandler B. (chandler)


Lesenswert?

Frank M. schrieb:
> Du siehst das aus der falschen Perspektive. Der öffentliche Server ist
> der Pi, der sieht nur die öffentlichen Schlüssel - mehr nicht. Jeder
> Gast (User) hat einen privaten Schlüssel, der auch bei ihm verbleibt.

Ja, dass macht sinn. Für mich war es irgendwie, es gibt nur einen 
Privaten Schlüssel und merhere öffentliche Schlüssel. Aber wenn ich es 
anders herum denke, ergibt es sinn.

Frank M. schrieb:
> Richtig wäre:
>
> 1. Jeder User erzeugt sich selbst das Schlüsselpaar
> 2. Jeder User sendet seinen öffentlichen Schlüssel an Dich als Admin
> 3. Du als Admin trägst die öffentlichen Schlüssel beim Pi ein.

Das macht auch sinn. (vor allem ersters und zweiteres).

Leider klappt das immer noch nciht mit dem Zugriff.
Habe noch einmal alles neu installiert und lasse mit 
PasswortAuthentication vorerst noch einmal an.

Da ich nur einen Windows-Rechner habe, konnte ich die Datei 
/etc/ssh/sshd_config auf der SD-Karte nicht sichtbar machen und es 
wieder ändern.
Nichts desto trotz funktioniert das mit dem Key noch nicht so wirklich.

Habe mit PuTTYgen ein Paar erzeugt. Den PublicKey habe ich in 
sshd_config  kopiert (hier ist es eine lange zeile, jedoch mit 
leerzeichen (?)). Nach einem neustart und laden des privaten keys, 
heißst es trotzdem noch das der Schlüssel abelehnt wurde

von dave4 (Gast)


Lesenswert?

Chandler B. schrieb:
> Da ich nur einen Windows-Rechner habe, konnte ich die Datei
> /etc/ssh/sshd_config auf der SD-Karte nicht sichtbar machen und es
> wieder ändern.
> Nichts desto trotz funktioniert das mit dem Key noch nicht so wirklich.

Wenn du Bildschirm und Tastatur anschließt kannst du dich wieder direkt 
anmelden.

Chandler B. schrieb:
> Habe mit PuTTYgen ein Paar erzeugt. Den PublicKey habe ich in
> sshd_config  kopiert (hier ist es eine lange zeile, jedoch mit
> leerzeichen (?)). Nach einem neustart und laden des privaten keys,
> heißst es trotzdem noch das der Schlüssel abelehnt wurde

Der Key in der Datei authorized_keys musst eine Zeile Lang sein und zwei 
Leerzeichen haben. Ein nach ssh-rsa und eins am Ende vor dem 
Kommentarfeld.
Hier findest du eine ganz gute Anleitung:
https://www.windowspro.de/thomas-drilling/putty-anmeldung-ueber-public-key-authentifizierung

von Mork (Gast)


Lesenswert?

Chandler B. schrieb:
> Den PublicKey habe ich in
> sshd_config  kopiert

Da gehört der auch nicht rein.

Du musst den Schlüssel in die authorized_keys des Benutzers kopieren, 
mit dem Du dich anmelden willst.

Also bspw. in /home/chandler/.ssh/authorized_keys

von Chandler B. (chandler)


Lesenswert?

dave4 schrieb:
> Wenn du Bildschirm und Tastatur anschließt kannst du dich wieder direkt
> anmelden.

Wenn ich es mit Monitor installiert hätte, dann ja. Da aber sonst noch 
nicht viel anderes darauf gemacht worden ist, war es nicht so viel, wass 
ich widerherstellen musste.

Mork schrieb:
> Chandler B. schrieb:
>> Den PublicKey habe ich in
>> sshd_config  kopiert
>
> Da gehört der auch nicht rein.
>
> Du musst den Schlüssel in die authorized_keys des Benutzers kopieren,
> mit dem Du dich anmelden willst.
>
> Also bspw. in /home/chandler/.ssh/authorized_keys

hatte es auch in authorized_keys kopiert.
sshd_config  war nur ein kopierfehler hier. Hier wurden ja die 
Einstellungen vorgenommen.

Habe noch einmal alles neu gestartet und etwas gewartet, jetzt 
funktioniert es. Neu gestartet hatte ich es vorher aber auch schon 
einmal, nachdem ich den key in authorized_keys eingetragen hatte. Was 
auch immer jetzt anders war.

Zumindest bekomme ich jetzt folgende Ausgaben
Putty:
Authenticating with public key "rsa-key-RaspberryPi"

Bei WinSCP bekomme ich immer noch keine Ausbabe.

Auch wenn ich jetzt wieder PasswordAuthentication deaktiviere, komme ich 
mit dem schlüssel wieder drauf

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.