SSH, public key, private key, usw.

H

heinetz

Aktives Mitglied
Thread Starter
Dabei seit
07.09.2007
Beiträge
695
Reaktionspunkte
13
Hallo Forum,
ich programmiere seit einer halben Ewigkeit Websites und schieb' die Inhalte per FTP auf irgendwelche Server. Vor ein paar Jahren kam dann mal SFTP, was für mich nichts veränderte und vor einem Jahr bekam ich's dann mal mit einem "pem-File" zu tun. Irgendwie hab ich's damit auch hinbekommen. Jetzt soll ich einen public key erzeugen. Das hat beides irgendwie miteinander und mit SSH zu tun. Was genau weiss ich aber nicht. Ich krieg's auch sicher irgendwie hin. Ich frage mich aber, ob sich das nun irgendwie beisst. Sprich, wenn ich nun einen public key für eine neue Verbindung erzeuge, das mit dem pem-File hinterher nicht mehr läuft. Dazu habe ich die Zusammenhänge irgendwie nicht verstanden. Kann mir das jemand mit einfachen Worten erklären?

danke und

gruss,
heinetz
 
Solange du die .pem Datei nicht überschreibst gibt das keine Probleme mit einem weiterem Schlüsselpaar. Du kannst in der .ssh/config angeben, welcher Hostcomputer welche Keydatei aufrufen soll. So zum Beispiel:

Code:
Host myshortname realname.example.com
HostName realname.example.com
IdentityFile ~/.ssh/realname_rsa # private key for realname
User remoteusername

Host myother realname2.example.org
HostName realname2.example.org
IdentityFile ~/.ssh/realname2_rsa
User remoteusername
Sofern dein Programm überhaupt über das reguläre ssh eine Verbindung aufbaut. Aber selbst in anderen SFTP-Programmen gibts dafür sicher eine Einstellung.

Du kannst aber auch einfach deinen schon jetzt vorhanden Schlüssel für die neue Verbindung nehmen. Wie oft du den "Public-Teil" für eine Verbindung zwischen Computern benutzt ist eigentlich egal, solange nur du den privaten Schlüssel hast. .. Falls ich deinen Beitrag überhaupt richtig verstanden habe :)
Edit: Also, ich habe z.B. mehrere (4) selbstgebaute NAS-Systeme auf denen Linux läuft, aber nur 1 generiertes Schlüsselpaar, das ich auf sowohl meinem Laptop als auch Desktop PC habe.
 
Zuletzt bearbeitet:
... Falls ich deinen Beitrag überhaupt richtig verstanden habe :)

Es klingt so.

Nachdem mich mein Ansprechpartner bei T-Systems darum gebeten hatte, einen public key zu erstellen und ihm zukommen zu lassen, habe ich mich an das Thema mit dem pem- File erinnert. Damals hatte ich mich ja schonmal in das Thema eingelesen und mir war so, als sei das im Grunde die selbe Technik. Mein erster Impuls war, das ich ja sowas schon habe und ich meine mich zu erinnern, dass das nicht an eine bestimmte Verbindung gekoppelt war. Also müsste man es ja auch für jede andere Verbindung nutzen können. Allerdings habe ich vorhin lediglich eine .pem in meinem ~/.ssh/ entdeckt und mir ist der Zusammenhang zwischen private key, public key und pem nicht klar.

Ok, nun könnte ich ein neues zusätzliches Schlüsselpaar erzeugen, über meine config regeln welches Schlüsselpaar für welche Verbindung verwendet werden soll, aber das vorhandene mehrfach zu verwenden erscheint mir am saubersten.

gruss,
heinetz
 
So, nun habe ich also diese .pem in meinem ssh-Verzeichnis (und zwar habe ich die mal für eine Verbindung von einem Server-Admin erhalten) und würde gerne darauf verzichten, ein neues Schlüsselpaar für eine andere Verbindung zu erzeugen. Wie gehe ich vor, um einem anderen Server-Admin den entsprechenden public key zukommen zu lassen?

gruss,
heinetz
 
Hallo,
ich muss das nochmal ausgraben. Ich habe nun versucht, aus meinem martin.pem einen public key zu extrahieren.

Das martin.pem enthält folgenden Inhalt:

Code:
-----BEGIN RSA PRIVATE KEY-----
Proc-Type: 4,ENCRYPTED
DEK-Info: AES-128-CBC,A21B34549595CD0B117BEF391F981437
...
-----END RSA PRIVATE KEY-----

Und versucht habe ich das mit folgendem Termin-Befehl:
openssl rsa -in ~/.ssh/key.pem -pubout > ~/.ssh/key.pub


Den key.pub have ich an den Server-Admin verschickt und der hat mir geantwortet, das sei ein SSL-Zertifikat. Klar, bei nochmaligem Lesen des Kommandos glaube ich ihm das auch ;) Wie geht das denn nun richtig? So?

ssh-keygen -f private.pem -y > private.pub

danke für Tipps und

gruss,
heinetz
 
Also
Code:
ssh-keygen -f blah
legt zwei files an. Den private und den public key.
Ansonsten versteh ich die Frage nicht.
Code:
# ls -al blah*
-rw-------  1 xxx  staff  1679 Sep  8 18:27 blah
-rw-r--r--  1 xxx  staff   398 Sep  8 18:27 blah.pub
 
die Frage ist, wie ich aus einem in einem .pem-File gespeicherten private key einen public key extrahiere.
 
beide befehle in #5 sind eigentlich korrekt (vor allem ssh-keygen...). was steht denn in der 1. zeile am anfang beim key.pub?
wenn du dich mit dem pem schon auf einen sftp anmelden kannst, liegt dort ja auch ein passender pubkey.
 
Zuletzt bearbeitet:
ich hatte die *.pem damals so (von dem Admin eines anderen Servers für den Zugriff auf diesen (anderen) Server) zugeschickt bekommen. Nach einigen Versuchen und mit Eurer Hilfe hatte ich das dann zum Laufen bekommen, ohne wirklich die Zusammenhänge zu verstehen. Ich habe also den dazugehörigen public key nie gesehen und komme auch nicht dran. Statt jetzt ein neues Schlüsselpaar zu erzeugen, würde ich gerne den vorhandenen Schlüssel nutzen. Letztlich mache ich mir das auch zur Aufgabe, um ein bisschen besser zu verstehen, was ich da mache.

Du schriebst, der Befehl:

ssh-keygen -f private.pem -y > private.pub

… wäre korrekt. Gut, dann versuche ich's damit.

Was ich ausserdem nicht begreife ist folgendes:

Die *.pem, die ich damals zugeschickt bekommen hatte, hiess martin.pem. Damit kriegte ich das Ganze erst nach eignen Versuchen hin. Wie sich für mich herausstellte, hing es an einer Namenskonvention. Wenn ich's nun richtig verstanden habe, muss das Ding id_rsa heissen. Heisst die Datei anders muss die Verknüpfung damit irgendwo explizit festlegen. Entweder in ~/.ssh/config oder möglicherweise als Option im Terminalkommando. Warum die Verbindung nun mit der martin.pem funktioniert, obwohl es keine ~/.ssh/config gibt, bleibt rätselhaft. Eine known_hosts habe ich in meinem ssl-Verzeichnis gefunden. Ich könnte mir vorstellen, dass die dafür verantwortlich ist. Was ich ausserdem nicht verstehe ist was es mit der Endung *.pem für eine Bewandtnis hat. oneOeight schrieb damals, ich müsse sie in id_rsa umbenennen, damit es funktioniert. Was hat es dann dann noch mit der Dateiendung für einen Sinn? Könnte ich sie genauso martin.fantasy nennen wie martin.pem?

man man, wenn man so im Trüben fischt, helfen leider keine man-Pages ;(

gute Nacht,
martin
 
Zuletzt bearbeitet von einem Moderator:
eine pem ist nur ein containerformat - was konkret drin ist, siehst du, wenn du reinschaust. bei deiner martin.pem halt auf jeden fall der private key. normalerweise kopiert man den key aus der pem in eine separate id_rsa/id_dsa.
in den man pages steht aber eigentlich alles haargenau drin. der default name für die schlüssel ist jeweils definiert und wenn du eine andere namenskonvention hast, musst du sie halt mit -i mitteilen oder per config festlegen. :noplan:
ausserdem ist es unüblich, den gleichen key für mehrere maschinen zu benutzen.
 
Zuletzt bearbeitet:
ausserdem ist es unüblich, den gleichen key für mehrere maschinen zu benutzen.

ok, verstehe, es ist unüblich. D.h. wenn man für verschiedene Maschinen verschiedene keys verwendet, müssen sie doch unterschiedliche Dateinamen bekommen.
 
ja und man legt sich eine config an.
was machst du denn, wenn noch jemand an der maschine mitarbeiten soll, aber beide einen account teilen müssen/sollen. so kannst du einfach den passenden private key der maschine weitergeben und nach beendigung der zusammenarbeit nur den einen erneuern.
 
ok, so herum kling das schlüssig.
ich würde denken, der private key ist nur für mich als user. wenn jemand anders an der maschine mitarbeiten soll, braucht der einen eigenen. wenn dann die zusammenarbeit beendet ist, liegt's an demjenigen, der die maschine administriert, wessen keys er weiterhin autorisiert. aber wenn es anders herum üblich ist, hätte ich mir wohl ein neues schlüsselpaar und eine config anlegen sollen.
 
es kommt darauf an, wo du arbeitest. für mich ist es kein problem schlüssel anzulegen und dir passende keys zu geben. anders rum ist es oft leichter "technisch weniger versierten" anwendern, den passenden priv.key in's ~/.ssh zu kopieren und sie können loslegen. vor allem, wenn die maschine nicht direkt in deinem adminbereich liegt und du den priv.key der maschine auch nur bekommen hast. solche fälle habe ich leider öfter, als "korrektes" eigene-schlüssel-für-alle. wenn du keinen zugriff auf die authorized_keys hast, musst du halt teilen.

was ich eigentlich sagen will: in der praxis wird das so gehandhabt, wie der admin es eben will. :p
man darf das ganze auch nicht so hausschlüsselmäßig sehen, eher wie passworte, einfach öfter wechseln und man fühlt sich wohler.
 
Zuletzt bearbeitet:
Zurück
Oben Unten