Git unter Linux/ wie mit dem ssh Schlüssel authentifizieren?
-
Hallo, ich habe für den Uniserver einen Schlüssel bekommen mit über dem ssh authentifizieren soll und so dort an meine Repository komme. Das Problem, ich weiß nicht wie ich es machen soll und finde leider im Internet nichts für mich verständliches dazu. Da steht immer etwas von Schlüssel generieren, aber ich habe doch bereits einen. Kann mir hier einer vielleicht weiterhelfen?
Danke
-
edit: Ach, jetzt habe ich irgendwie überlesen, dass es noch speziell für git sein soll, kein allgemeiner ssh-Zugang. Dann weißt du das unten wahrscheinlich schon alles. Ich lasse es trotzdem mal für andere stehen. Für git müsste ich manche Sachen leider erst einmal selber nachgucken. Womit genau hast du denn Probleme?
Pack den Schlüssel in dein ~/.ssh Verzeichnis (oder irgendwoanders, wo nur du Leserechte hast). Beschütze diese Datei als wäre sie Geld wert!
Dann kannst du beim ssh-Aufruf mittels
-i Dateiname
angeben, dass diese Datei zur Authentifizierung benutzt werden soll. Genaueres auf man: ssh.Das ist einigermaßen unpraktisch, daher kannst du im .ssh Verzeichnis eine Datei
config
anlegen, in die du etwas wie folgendes schreiben kannst:Host VonDirAusgedachterAlias HostName WieDerUniserverWirklichHeißt UserName DeinNutzernameAufDemServer IdentityFile DeineSchlüsseldatei
Genaueres auf man: ssh_config. Dann kannst du einfach
ssh VonDirAusgedachterAlias
machen und es passt bereits alles.Nun zum Thema Sicherheit: Wie schon erwähnt, ist diese Datei als wertvoll zu betrachten. Daher verschlüsselst du sie besser:
ssh-keygen -p -f Dateiname
So ist sichergestellt, dass selbst bei einem Einbruch in dein System niemand die Datei benutzen kann*. Genaues unter man: ssh-keygen
Nun musst du bei jedem Login das Passwort angeben. Das ist auch nervig. Dazu gibt es man: ssh-add. Mittels
ssh-add Dateiname
wird die Identity-Datei zum man: ssh-agent deiner Session hinzugefügt. Dabei wirst du einmalig nach dem Passwort gefragt, danach kannst du den Schlüssel passwortlos im Bereich des so benutzten ssh-agents (d.h. in der Regel in deiner momentanen Session) benutzen. Dieses Verfahren solltest du nur auf Rechnern benutzen, auf denen root vertrauenswürdig ist (z.B. du selber bist root).*: So kannst du dich auch (einigermaßen) vor einem nicht vertrauenswürdigen root-User schützen. Wobei dieser auch noch ganz andere Mittel hätte. Aber gegen ein Gelegenheitsscriptkiddie reicht's. Allgemein hat die Datei natürlich nichts auf einem nicht vertrauenswürdigen System zu suchen!
-
Blöde Frage. Wie komme ich an das .ssh Verzeichnis bzw wo finde ich das?
-
Namal schrieb:
Blöde Frage. Wie komme ich an das .ssh Verzeichnis bzw wo finde ich das?
Das sollte eigentlich schon da sein, sofern ssh auf dem Rechner ist. Ansonsten leg es selber an. Im Prinzip ist das einfach ein Verzeichnis, für das du allen anderen alle Rechte entziehst. Und es wird natürlich wegen seines Namens von den gängigen Tools standardmäßig nicht angezeigt.
Siehe aber noch ganz dringend mein edit am Anfang meines ersten Beitrags! Das ist nämlich nicht das, was du eigentlich suchst!
-
Hallo SeppJ,
also ich glaube schon, dass es das richtige ist. Also mir wurde nur dieser Schlüssel gegeben und die Adresse zu der Repository gegeben, die so anfängt
ssh://gitolite@....
Also ich habe jetzt .ssh angeledt und dort die Keydatei kopiert, aber wenn ich
$ ssh -i dateinname
aufrufe, passiert leider nichts. Er Zeigt mir dann usage: ssh an.
Muss der Befehl vielleicht auch den Pfad zu der Datei enthalten?
-
also ich glaube schon, dass es das richtige ist
Ja, ganz verkehrt ist meine Anleitung nicht. git nutzt ssh und die Anleitung ist für ssh alleine. Du musst dich bloß noch kundig machen, wie du das genau mit git zusammen benutzt.
Jedoch:
Also ich habe jetzt .ssh angeledt und dort die Keydatei kopiert, aber wenn ich
$ ssh -i dateinname
aufrufe, passiert leider nichts.
Du hast noch niemals mit ssh oder gar einer Konsole gearbeitet, oder?
Ich kann dir im Rahmen des Forums nicht beibringen, wie man Manpages liest, ssh benutzt oder sich selber Hilfe zu einfachen Problemen besorgt. Das musst du erst einmal selber lernen, das wäre einfach zu viel zu erklären . Danach können wir gerne über konkrete Probleme zu bestimmten Befehlen reden (also z.B. den Inhalt meines ersten Beitrags). Aber die Grundlagen musst du schon können, sonst verstehst du meine Antworten nicht.
-
Dein Git-Anbieter scheint sehr unsicher zu sein, ich würde wechseln.
Einen ssh-Key schickt man niemals an einen User. Der User erzeugt sich immer selber ein ssh-Key-Paar aus public und private key. Den public key schickt er an den Git-Anbieter, der ihn dann einträgt. Der private key ist nur im Besitz des Users, der Git-Anbieter darf den nicht kennen.
Ein Schlüsselpaar erzeugen geht auch völlig einfach mit "ssh-keygen" ohne weitere Parameter, und alles ist danach an der richtigen Stelle für git und ssh, ohne weitere Konfiguration.
-
also ich hab das mit ewas Hilfe so gelöst:
falls der ssh-agent schon läuft, dann killen:
$ ssh-agent -k
und die Befehle nacheinander aufrufen
$ ssh-agent $ eval $(ssh-agent) $ ssh-add key
Läuft jetzt alles wunderbar!
-
Wieso killst du vorher den ssh-agent?