162 lines
2.7 KiB
Markdown
162 lines
2.7 KiB
Markdown
### 🔧 1. SSH-Schlüssel erzeugen
|
||
|
||
Öffne ein Terminal und gib ein:
|
||
|
||
```bash
|
||
ssh-keygen -t ed25519 -C "dein.name@beispiel.de"
|
||
```
|
||
|
||
- `-t ed25519`: moderner, sicherer Schlüsseltyp (alternativ: `rsa`).
|
||
- `-C`: Kommentar zur Identifikation (z. B. deine E-Mail).
|
||
|
||
**Wenn gefragt:**
|
||
|
||
- Speicherort bestätigen mit **Enter** (Standard: `~/.ssh/id_ed25519`).
|
||
- Optional ein **Passwort** setzen (empfohlen für zusätzliche Sicherheit).
|
||
|
||
---
|
||
|
||
### 📤 2. Öffentlichen Schlüssel auf den Server kopieren
|
||
|
||
Wenn du z. B. Zugriff auf `user@server.de` hast:
|
||
|
||
```bash
|
||
ssh-copy-id user@server.de
|
||
```
|
||
|
||
Falls `ssh-copy-id` nicht installiert ist, kannst du den Schlüssel auch manuell übertragen:
|
||
|
||
```bash
|
||
cat ~/.ssh/id_ed25519.pub
|
||
```
|
||
|
||
Dann den Inhalt in die Datei `~/.ssh/authorized_keys` auf dem Server einfügen.
|
||
|
||
---
|
||
|
||
### 🔐 3. Mit dem Server verbinden
|
||
|
||
Danach kannst du dich einfach per SSH einloggen:
|
||
|
||
```bash
|
||
ssh user@server.de
|
||
```
|
||
|
||
Du wirst **nicht mehr nach dem Passwort des Servers** gefragt – nur ggf. nach der Passphrase deines privaten Schlüssels.
|
||
|
||
---
|
||
|
||
### 🧩 (Optional) 4. SSH-Agent verwenden
|
||
|
||
Damit du die Passphrase nicht ständig eingeben musst:
|
||
|
||
```bash
|
||
eval "$(ssh-agent -s)"
|
||
ssh-add ~/.ssh/id_ed25519
|
||
```
|
||
|
||
---
|
||
Wenn `git push` weiterhin nach einem Passwort fragt, liegt das fast immer daran, dass dein Repository **über HTTPS statt SSH** verbunden ist.
|
||
|
||
Lass uns das prüfen und beheben 👇
|
||
|
||
---
|
||
|
||
## 🔎 1️⃣ Prüfen, welche Remote-URL verwendet wird
|
||
|
||
Im Repository:
|
||
|
||
```bash
|
||
git remote -v
|
||
```
|
||
|
||
Wenn du etwas siehst wie:
|
||
|
||
```
|
||
https://github.com/USERNAME/REPO.git
|
||
```
|
||
|
||
➡ Dann nutzt du **HTTPS** – deshalb wird ein Passwort (bzw. Token) verlangt.
|
||
|
||
Wenn dort steht:
|
||
|
||
```
|
||
git@github.com:USERNAME/REPO.git
|
||
```
|
||
|
||
➡ Das ist korrekt (SSH).
|
||
|
||
---
|
||
|
||
## 🔁 2️⃣ Remote von HTTPS auf SSH umstellen
|
||
|
||
Ersetze die URL mit der SSH-Version:
|
||
|
||
```bash
|
||
git remote set-url origin git@github.com:USERNAME/REPO.git
|
||
```
|
||
|
||
Danach nochmal testen:
|
||
|
||
```bash
|
||
git push
|
||
```
|
||
|
||
---
|
||
|
||
## 🧪 3️⃣ SSH-Verbindung separat testen
|
||
|
||
```bash
|
||
ssh -T git@github.com
|
||
```
|
||
|
||
Du solltest eine Meldung bekommen wie:
|
||
|
||
```
|
||
Hi USERNAME! You've successfully authenticated...
|
||
```
|
||
|
||
Wenn nicht, sag mir bitte die Fehlermeldung.
|
||
|
||
---
|
||
|
||
## 🔐 4️⃣ Falls SSH korrekt ist, aber trotzdem Passwort kommt
|
||
|
||
Dann prüfen:
|
||
|
||
### Läuft der SSH-Agent?
|
||
|
||
```bash
|
||
ssh-add -l
|
||
```
|
||
|
||
Wenn dort steht:
|
||
|
||
```
|
||
The agent has no identities.
|
||
```
|
||
|
||
Dann:
|
||
|
||
```bash
|
||
ssh-add ~/.ssh/id_ed25519
|
||
```
|
||
|
||
---
|
||
|
||
## 🛠 5️⃣ Debug-Modus (wenn es immer noch nicht klappt)
|
||
|
||
```bash
|
||
ssh -vT git@github.com
|
||
```
|
||
|
||
Das zeigt, welcher Key wirklich benutzt wird.
|
||
|
||
---
|
||
|
||
### 💡 90% der Fälle:
|
||
|
||
Das Repository wurde ursprünglich per HTTPS geklont.
|
||
|
||
Wenn du möchtest, kannst du mir die Ausgabe von
|
||
`git remote -v` posten – dann sage ich dir exakt, was los ist. |