<hr>
<h2>Warum SSH ohne Passwort?</h2>
<p>Eine passwortlose SSH-Anmeldung ist praktisch und sicher, wenn sie richtig eingerichtet wird. Statt bei jeder Verbindung ein Passwort einzugeben, authentifiziert sich der PC mit einem privaten Schlüssel. Auf dem Linux-Server wird dazu nur der passende öffentliche Schlüssel hinterlegt.</p>
<p>Der private Schlüssel bleibt immer auf dem eigenen PC oder Laptop. Der öffentliche Schlüssel darf auf den Server kopiert werden.</p>
<hr>
<h2>1. SSH-Key auf dem PC oder Laptop erstellen</h2>
<p>Auf dem PC oder Laptop, von dem aus später die SSH-Verbindung aufgebaut werden soll, wird zuerst ein neuer SSH-Key erstellt.</p>
<p>Unter Windows kann dafür PowerShell oder Windows Terminal verwendet werden:</p>
<pre><code>
ssh-keygen -t ed25519 -C "PC-Name"
</code></pre>
<p><code>PC-Name</code> kann durch einen sinnvollen Namen ersetzt werden, zum Beispiel:</p>
<pre><code>
ssh-keygen -t ed25519 -C "Laptop-Julius"
</code></pre>
<p>Danach fragt <code>ssh-keygen</code> nach dem Speicherort und optional nach einer Passphrase.</p>
<p>Für eine einfache Anmeldung kann man die Standardwerte übernehmen:</p>
<pre><code>
Enter file in which to save the key: [Enter]
Enter passphrase: [Enter]
Enter same passphrase again: [Enter]
</code></pre>
<p>Dadurch werden normalerweise zwei Dateien erstellt:</p>
<pre><code>
C:\Users\Benutzer\.ssh\id_ed25519
C:\Users\Benutzer\.ssh\id_ed25519.pub
</code></pre>
<p>Wichtig:</p>
<ul>
<li><code>id_ed25519</code> ist der private Schlüssel und bleibt auf dem PC.</li>
<li><code>id_ed25519.pub</code> ist der öffentliche Schlüssel und wird auf dem Server eingetragen.</li>
</ul>
<hr>
<h2>2. Öffentlichen Schlüssel kopieren</h2>
<p>Jetzt wird die Datei <code>id_ed25519.pub</code> geöffnet.</p>
<p>Der Inhalt sieht ungefähr so aus:</p>
<pre><code>
ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAA... Laptop-Julius
</code></pre>
<p>Diese komplette Zeile wird kopiert.</p>
<hr>
<h2>3. Auf dem Linux-Server anmelden</h2>
<p>Nun meldet man sich einmalig noch mit dem bisherigen Passwort am Linux-Server an:</p>
<pre><code>
ssh benutzer@server-ip
</code></pre>
<p>Beispiel:</p>
<pre><code>
ssh julius@192.168.1.10
</code></pre>
<hr>
<h2>4. SSH-Server für Public-Key-Login prüfen</h2>
<p>Auf dem Linux-Server wird die SSH-Konfiguration geöffnet:</p>
<pre><code>
sudo nano /etc/ssh/sshd_config
</code></pre>
<p>Dort sollten folgende Einstellungen vorhanden sein:</p>
<pre><code>
PubkeyAuthentication yes
AuthorizedKeysFile %h/.ssh/authorized_keys
</code></pre>
<p>Falls die Zeilen mit <code>#</code> auskommentiert sind, kann das <code>#</code> entfernt werden.</p>
<p>Danach speichern und schließen:</p>
<pre><code>
Strg + O
Enter
Strg + X
</code></pre>
<hr>
<h2>5. Ordner und Datei für SSH-Keys vorbereiten</h2>
<p>Auf dem Linux-Server muss der <code>.ssh</code>-Ordner im Home-Verzeichnis des Benutzers existieren.</p>
<pre><code>
mkdir -p ~/.ssh
chmod 700 ~/.ssh
</code></pre>
<p>Danach wird der öffentliche Schlüssel in die Datei <code>authorized_keys</code> geschrieben.</p>
<p>Dafür wird die vorher kopierte Zeile aus <code>id_ed25519.pub</code> eingefügt:</p>
<pre><code>
echo "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAA... Laptop-Julius" >> ~/.ssh/authorized_keys
</code></pre>
<p>Anschließend die Rechte setzen:</p>
<pre><code>
chmod 600 ~/.ssh/authorized_keys
</code></pre>
<p>Wichtig: In den <code>echo</code>-Befehl gehört der eigene öffentliche Schlüssel, nicht der Beispiel-Key aus dieser Anleitung.</p>
<hr>
<h2>6. SSH-Dienst neu starten</h2>
<p>Damit die SSH-Konfiguration sicher neu geladen wird, wird der SSH-Dienst neu gestartet:</p>
<pre><code>
sudo systemctl restart ssh
</code></pre>
<p>Auf manchen Distributionen heißt der Dienst <code>sshd</code>:</p>
<pre><code>
sudo systemctl restart sshd
</code></pre>
<hr>
<h2>7. Neue Anmeldung testen</h2>
<p>Jetzt die bestehende SSH-Sitzung verlassen:</p>
<pre><code>
exit
</code></pre>
<p>Danach erneut verbinden:</p>
<pre><code>
ssh benutzer@server-ip
</code></pre>
<p>Wenn alles passt, sollte die Anmeldung jetzt ohne Passwortabfrage funktionieren.</p>
<hr>
<h2>Optional: bestimmten Key angeben</h2>
<p>Falls mehrere SSH-Keys vorhanden sind, kann man den gewünschten Key direkt angeben:</p>
<pre><code>
ssh -i C:\Users\Benutzer\.ssh\id_ed25519 benutzer@server-ip
</code></pre>
<p>Unter Linux oder macOS wäre der Pfad typischerweise:</p>
<pre><code>
ssh -i ~/.ssh/id_ed25519 benutzer@server-ip
</code></pre>
<hr>
<h2>Kurze Checkliste</h2>
<ul>
<li>SSH-Key mit <code>ssh-keygen -t ed25519</code> erstellt</li>
<li>Inhalt von <code>id_ed25519.pub</code> kopiert</li>
<li>Auf dem Linux-Server <code>~/.ssh</code> erstellt</li>
<li>Public Key in <code>~/.ssh/authorized_keys</code> eingefügt</li>
<li>Rechte gesetzt: <code>700</code> für <code>.ssh</code>, <code>600</code> für <code>authorized_keys</code></li>
<li>SSH-Dienst neu gestartet</li>
<li>Neue SSH-Anmeldung getestet</li>
</ul>
<hr>
<h2>Typische Fehler</h2>
<h3>Es wird trotzdem ein Passwort abgefragt</h3>
<p>Dann prüfen:</p>
<pre><code>
cat ~/.ssh/authorized_keys
</code></pre>
<p>Der öffentliche Schlüssel muss dort vollständig in einer Zeile stehen.</p>
<p>Außerdem die Rechte prüfen:</p>
<pre><code>
ls -ld ~/.ssh
ls -l ~/.ssh/authorized_keys
</code></pre>
<p>Empfohlen:</p>
<pre><code>
~/.ssh 700
~/.ssh/authorized_keys 600
</code></pre>
<h3>Permission denied</h3>
<p>Dann wurde wahrscheinlich der falsche Benutzer verwendet oder der Schlüssel liegt im falschen Home-Verzeichnis.</p>
<p>Beispiel: Wenn man sich mit <code>ssh admin@server</code> anmeldet, muss der Key unter <code>/home/admin/.ssh/authorized_keys</code> liegen.</p>
<hr>
<h2>Fazit</h2>
<p>Mit einem ED25519-SSH-Key lässt sich die Anmeldung an Linux-Servern komfortabel und sicher einrichten. Wichtig ist, dass der private Schlüssel auf dem eigenen PC bleibt und auf dem Server nur der öffentliche Schlüssel in <code>authorized_keys</code> eingetragen wird.</p>