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


  • Mod

    ⚠ 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?


  • Mod

    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?


  • Mod

    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!


  • Mod

    Wieso killst du vorher den ssh-agent?


Log in to reply