Zum Inhalt

Git und SSH-Schlüssel

In meinem letzten Beitrag habe ich aufgezeigt, dass der Zugriff auf ein Git-Repository mit einem YubiKey sehr einfach möglich ist.

👉 Zugriff auf Git Repository mit einem YubiKey

Hat man keinen YubiKey oder man möchte einfach ein neues SSH-Schlüsselpaar nutzen, um auf ein Git Repository zuzugreifen, ist das sehr einfach möglich.

Ein SSH-Schlüsselpaar lässt sich auf jedem Linux-System ganz schnell erstellen.

Ein SSH-Schlüsselpaar erstellt ihr im Terminal mit dem Befehl:

ssh-keygen -t rsa -b 4096 -C "adresse@test.de"

Der Schlüssel wird erzeugt und ihr werdet nach einem Passwort gefragt.

Generating public/private rsa key pair.
Enter file in which to save the key (/home/benutzer/.ssh/id_rsa):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /home/benutzer/.ssh/id_rsa.
Your public key has been saved in /home/benutzer/.ssh/id_rsa.pub.
The key fingerprint is:
SHA256:jk+1XYiERM2MJol5e8g2511Nms7Dp8IIbpNPsjtFM7A adresse@test.de
The key's randomart image is:
+---[RSA 4096]----+
|     oo=         |
|    o.+   .      |
|    . .  =       |
|      E *. .+..  |
|     .        .  |
|      .oo..  ..  |
|     .  .        |
|      **. o      |
|     .  o  .     |
+----[SHA256]-----+

In der Ausgabe wird euch ganz genau angezeigt, wo ihr den neuen privaten und öffentlichen SSH-Schlüssel findet.

  • /home/benutzer/.ssh/id_rsa --> privater Schlüssel
  • /home/benutzer/.ssh/id_rsa.pub --> öffentlicher Schlüssel

Den öffentlichen Schlüssel könnt ihr euch gleich auf dem Terminal anzeigen lassen und z.B. über die Zwischenablage auf den Gitea-Server kopieren

sudo cat /home/destroy/.ssh/id_rsa.pub

Anschließend könnt ihr sofort auf dem Server, wo ihr das Schlüsselpaar erzeugt habt, die Git-Befehle ausführen. Ihr werdet dann jedes Mal nach dem oben vergebenen Passwort gefragt.

Es gibt eine kleine Einschränkung, die ihr zu beachten habt. Ihr könnt das Git Repository nur auf die Festplatte holen, wo der Benutzer Schreibrechte habe. Wollt ihr das Repo in ein anderes Verzeichnis schreiben, ist das nicht möglich.

Auch die Möglichkeit die Git-Befehle einfach mit einem sudo auszuführen sind nicht möglich. Wenn ihr das ausprobiert, erhaltet ihr so eine ähnliche Fehlermeldung ausgegeben:

sudo git clone ssh://git@codeberg.org/benutzer/meinrepo.git

Cloning into 'folder'...
git@codeberg.org: Permission denied (publickey).
fatal: Could not read from remote repository.

Please make sure you have the correct access rights
and the repository exists.

Wenn ihr den Git-Befehl mit sudo ausführt, wechselt ihr den Benutzer. Ihr seit nicht länger benutzer, sondern für kurze Zeit root. Dieser Benutzer hat keinen SSH-Schlüssel hinterlegt und deshalb funktioniert der Zugriff auf das Repository nicht.

Auf GitHub findet sich eine Erklärung dazu:

Should the sudo command be used with Git? You should not be using the sudo command with Git. If you have a very good reason you must use sudo, then ensure you are using it with every command (it's probably just better to use su to get a shell as root at that point). If you generate SSH keys without sudo and then try to use a command like sudo git push, you won't be using the same keys that you generated.

Quelle: https://docs.github.com/en/github/authenticating-to-github/troubleshooting-ssh/error-permission-denied-publickey

Euer eigener Git-Server

Den eigenen Git-Server könnt ihr sehr einfach selbst installieren, z.B. auf einem Raspberry Pi oder auf einer Synology NAS.

👉 Gitea auf einem Synology NAS installieren

👉 Gitea – Eine grafische Oberfläche für den Git-Server

Gib mir gerne einen Kaffee ☕ aus ❗️

Wenn dir meine Beiträge gefallen und geholfen haben, dann kannst du mir gerne einen Kaffee ☕️ ausgeben.

Donation via PayPalDonation via LiberaPay

Donation via Bitcoin
Bitcoin Address: bc1qfuz93hw2fhdvfuxf6mlxlk8zdadvnktppkzqzj

Source

Photo by Samantha Lam on Unsplash