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.
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.
Follow Me❗️
Source
Photo by Samantha Lam on Unsplash