# SSH-Zugriff auf Git-Repository in WSL einrichten

Diese Anleitung beschreibt, wie man innerhalb von WSL (z. B. Ubuntu) ein Git-Repository per SSH nutzen kann, z. B. bei einem selbst gehosteten Gitea-Server auf `dns.lan` mit Port `2222`.

- [SSH-Zugriff auf Git-Repository in WSL einrichten](#ssh-zugriff-auf-git-repository-in-wsl-einrichten)
  - [🔧 Voraussetzungen](#-voraussetzungen)
  - [🧱 Schritt 1: SSH-Verzeichnis in WSL anlegen](#-schritt-1-ssh-verzeichnis-in-wsl-anlegen)
  - [🗝️ Schritt 2: SSH-Schlüssel aus Windows in WSL übernehmen](#️-schritt-2-ssh-schlüssel-aus-windows-in-wsl-übernehmen)
  - [⚙️ Schritt 3: SSH-Konfiguration (optional, empfohlen)](#️-schritt-3-ssh-konfiguration-optional-empfohlen)
  - [🧪 Schritt 4: Verbindung testen](#-schritt-4-verbindung-testen)
  - [🐙 Schritt 5: Git-Remote setzen oder klonen](#-schritt-5-git-remote-setzen-oder-klonen)
    - [✅ Bestehendes Repo umstellen](#-bestehendes-repo-umstellen)
    - [✅ Neues Repo klonen](#-neues-repo-klonen)
  - [🛡️ Hinweis: Keine Shell-Zugänge über Git-SSH](#️-hinweis-keine-shell-zugänge-über-git-ssh)
  - [✅ Fertig](#-fertig)
  - [🔁 Optional: Globale Git-Konfiguration absichern](#-optional-globale-git-konfiguration-absichern)
  - [🔑 SSH-Key unter WSL erzeugen](#-ssh-key-unter-wsl-erzeugen)
    - [🛠️ Voraussetzungen installieren](#️-voraussetzungen-installieren)
    - [🔐 SSH-Key erzeugen](#-ssh-key-erzeugen)
      - [⌨️ Bei der Abfrage:](#️-bei-der-abfrage)
    - [🔍 Public Key anzeigen](#-public-key-anzeigen)
    - [✅ Optional: SSH-Agent starten \& Schlüssel hinzufügen](#-optional-ssh-agent-starten--schlüssel-hinzufügen)

---

## 🔧 Voraussetzungen

- WSL ist eingerichtet (z. B. Ubuntu)  
- Ein Git-Server ist erreichbar (z. B. `git@dns.lan:2222`)  
- Du hast bereits Zugriff über Windows (z. B. via PowerShell)  
- OpenSSH ist in der WSL-Distribution installiert  
- Wenn Du noch keinen Key hast oder einen neuen einrichten möchtest, gibt es unten unter [🔑 SSH-Key unter WSL erzeugen](#-ssh-key-unter-wsl-erzeugen) nochmal eine Auffrischung.  

---

## 🧱 Schritt 1: SSH-Verzeichnis in WSL anlegen

```bash
mkdir -p ~/.ssh
chmod 700 ~/.ssh
```

---

## 🗝️ Schritt 2: SSH-Schlüssel aus Windows in WSL übernehmen

Falls du in Windows bereits einen Schlüssel hast, z. B. `C:\Users\NAME\.ssh\id_ed25519`, kopiere ihn:

```bash
cp /mnt/c/Users/NAME/.ssh/id_ed25519 ~/.ssh/
cp /mnt/c/Users/NAME/.ssh/id_ed25519.pub ~/.ssh/
chmod 600 ~/.ssh/id_ed25519
chmod 644 ~/.ssh/id_ed25519.pub
```

🔁 Ersetze `NAME` mit deinem Windows-Benutzernamen.

---

## ⚙️ Schritt 3: SSH-Konfiguration (optional, empfohlen)

Erstelle (oder bearbeite) die Datei `~/.ssh/config`:

```bash
nano ~/.ssh/config
```

Füge ein:

```ssh
Host gitea
    HostName dns.lan
    Port 2222
    User git
    IdentityFile ~/.ssh/id_ed25519
```

→ Damit kannst du den Hostname `gitea` als Alias verwenden.

---

## 🧪 Schritt 4: Verbindung testen

```bash
ssh -T gitea
```

Erwartete Ausgabe:

```text
Hi there, realAscot! You've successfully authenticated...
```

---

## 🐙 Schritt 5: Git-Remote setzen oder klonen

### ✅ Bestehendes Repo umstellen

```bash
git remote set-url origin gitea:realAscot/mein-projekt.git
```

### ✅ Neues Repo klonen

```bash
git clone gitea:realAscot/mein-projekt.git
```

---

## 🛡️ Hinweis: Keine Shell-Zugänge über Git-SSH

Wenn du folgende Meldung siehst:

```text
You've successfully authenticated, but Gitea does not provide shell access.
```

→ Das ist normal und **kein Fehler** – Push/Pull funktioniert trotzdem.

---

## ✅ Fertig

Du kannst jetzt in WSL wie gewohnt per SSH arbeiten:

```bash
git pull
git push
```

---

## 🔁 Optional: Globale Git-Konfiguration absichern

```bash
git config --global core.autocrlf input
git config --global core.eol lf
```

Damit vermeidest du Konflikte durch Windows-Zeilenenden.
Hat mit dem SSH Key jetzt nichts zu tun, aber ein kleiner Tipp nebenbei um bekannte Fehler zu vermeiden.

---

## 🔑 SSH-Key unter WSL erzeugen

Hier ist eine kompakte Anleitung in **Markdown**, wie du unter **WSL** (z. B. Ubuntu) einen SSH-Key erzeugst und die nötigen Tools installierst, um z. B. Gitea-Zugriff zu ermöglichen.

### 🛠️ Voraussetzungen installieren

```bash
sudo apt update
sudo apt install -y openssh-client
```

### 🔐 SSH-Key erzeugen

```bash
ssh-keygen -t ed25519 -C "dein.name@example.com" -f ~/.ssh/id_ed25519_gitea
```

Der Parameter `-f` gibt den Pfad und Namen des neuen Keys an.
Wenn man diesen weglässt, überschreibst Du Dir eventuell einen schon vorhandenen Key den Du vielleicht für etwas anderes nutzt!
Du wirst dann aber je nach Version nach einem Pfad gefragt.
Besser direkt angeben.

- **Erklärung:**

  - `-t ed25519`: moderner, sicherer Algorithmus
  - `-C`: Kommentar (z. B. Mailadresse oder Systembeschreibung)

#### ⌨️ Bei der Abfrage:

- **Dateipfad**: einfach Enter drücken für Standard (`~/.ssh/id_ed25519_gitea`)
- **Passphrase**: optional, aber empfohlen (für zusätzliche Sicherheit)

### 🔍 Public Key anzeigen

```bash
cat ~/.ssh/id_ed25519_gitea.pub
```

→ Diesen Schlüssel dann in **Gitea unter „SSH-Schlüssel“** einfügen.

### ✅ Optional: SSH-Agent starten & Schlüssel hinzufügen

```bash
eval "$(ssh-agent -s)"
ssh-add ~/.ssh/id_ed25519_gitea
```

---
