Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
Next revision
Previous revision
linux:ssh [2025/04/26 13:31] swelinux:ssh [2025/12/20 14:53] (current) – external edit 127.0.0.1
Line 3: Line 3:
 ## tl;dr ## tl;dr
  
-```bash +**Erzeugen des private-public-key Paares auf dem Client** 
-    # Erzeugen des private-public-key Paares auf dem Client +``` 
-    ssh-keygen -t rsa+ssh-keygen -t rsa 
 +``` 
 +**Übertragen des public(!)-key auf den Server in den .ssh Ordner**
  
-    # Übertragen des public(!)-key auf den Server in den .ssh Ordner+Variante 1: Linux zu Linux
  
-    # Variante 1: Linux +Hier Transport und Übertragung nach authorized_keys in einem Rutsch 
-    # Hier Transport und Übertragung nach authorized_keys in einem Rutsch +``` 
-    ssh-copy-id user@server+ssh-copy-id user@server 
 +``` 
 +Variante 2: Windows zu Linux
  
-    # Variante 2: Windows +Hier erst Transport und händisches Übertragung nach authorized_keys 
-    # Hier erst Transport und händisches Übertragung nach authorized_keys +```scp public_key.pub user@server:~/.ssh 
-    scp public_key.pub user@server:~/.ssh +cat id_rsa.pub >> authorized_keys
-    cat id_rsa.pub >> authorized_keys+
 ``` ```
  
Line 26: Line 29:
 aufgelistet. aufgelistet.
  
-Bitte beachten: Um zu wissen, ob wir uns gerade auf dem Client oder dem+*Bitte beachten: Um zu wissen, ob wir uns gerade auf dem Client oder dem
 Server befinden, sind den Befehlen jeweils ein `user@client`(Client) Server befinden, sind den Befehlen jeweils ein `user@client`(Client)
-bzw. ein `user@server` (Server/Host) vorangestellt.+bzw. ein `user@server` (Server/Host) vorangestellt.*
  
 ## Client ## Client
Line 37: Line 40:
  
 ``` ```
-  user@client: ssh-keygen -t rsa+user@client: ssh-keygen -t rsa
 ```  ``` 
- 
 Wenn du die folgenden Abfragen nach Dateinamen nur durch `Enter` überspringst, entstehen standardmäßig zwei Wenn du die folgenden Abfragen nach Dateinamen nur durch `Enter` überspringst, entstehen standardmäßig zwei
 Dateien: Dateien:
Line 46: Line 48:
 - Der public key: `id_rsa.pub` (.pub wie public ;) - Der public key: `id_rsa.pub` (.pub wie public ;)
  
-Verteilt wird ausschließlich der public key! Der private key wird gehütet, wie der eigenen Augapfel+**Verteilt wird ausschließlich der public key! Der private key wird gehütet, wie der eigene Augapfel!**
  
  
Line 56: Line 58:
  
 ## Schlüssel-Transfer ## Schlüssel-Transfer
 +Der public key muss zum Server transferiert werden
  
-### Variante 1: Der public key muss zum Server transferiert werden +### Variante 1: Linux zu Linux
- +
-Hierfür wird folgender Befehl genutzt: +
  
 ``` ```
-    user@client: ssh-copy-id user@server+user@client: ssh-copy-id user@server
 ``` ```
  
-Solltest du einen individuellen Namen für die Schlüssel erstellt haben,+Solltest du einen **individuellen** Namen für die Schlüssel erstellt haben,
 nutzt du  nutzt du 
  
Line 71: Line 72:
 user@client: ssh-copy-id -i ~/.ssh/mykey user@server user@client: ssh-copy-id -i ~/.ssh/mykey user@server
 ``` ```
 +`-i ~/.ssh/mykey` macht hier den Unterschied.
  
-Dabei wird der public key auf den Server transferiert und dort im Order   +Dabei wird der public key auf den Server transferiert und dort der Datei `authorized_keys` **hizugefügt**: 
-`user@server~/.sshder Datei `user@server:~/.ssh/authorized_keys`   + 
-hinzugefügt.+ 
 +``
 +user@server:~/.ssh/authorized_keys 
 +``` 
  
 ### Variante 2: Sorgenkind Windows ### Variante 2: Sorgenkind Windows
Line 90: Line 95:
 user@server:~/.ssh cat id_rsa.pub >> authorized_keys user@server:~/.ssh cat id_rsa.pub >> authorized_keys
 ``` ```
 +Hier geht es um das `cat id_rsa.pub >> authorized_keys`.
  
-## Einloggen+## Einloggen nach dem Schlüssel-Transfer
  
 ### Fall 1: Du hast keinen individuellen Namen gewählt. ### Fall 1: Du hast keinen individuellen Namen gewählt.
Line 100: Line 106:
  
 Ab jetzt reicht es, einfach, diesen Befehl zu verwenden - eine Ab jetzt reicht es, einfach, diesen Befehl zu verwenden - eine
-Passwort-Abfrage erfolgt nicht mehr.\+Passwort-Abfrage erfolgt nicht mehr. 
 Dabei verwendest du also den Befehl `ssh` ergänzt um das Argumentpaar Dabei verwendest du also den Befehl `ssh` ergänzt um das Argumentpaar
 `user@server`, also dem **User**, der am Host **server** angemeldet `user@server`, also dem **User**, der am Host **server** angemeldet
Line 115: Line 122:
 Falls dir der Befehl `ssh user@server` noch zu lang ist, ist es möglich, Falls dir der Befehl `ssh user@server` noch zu lang ist, ist es möglich,
 sich über einen Alias einzuloggen. sich über einen Alias einzuloggen.
 +
 +Schreibe eine Konfiguration in die Datei `~/.ssh/config` auf dem **Client**.
  
 ``` ```
Line 132: Line 141:
 wählen) wählen)
  
-## Möglichkeit zum Log-In per Passwort deaktivieren+## Möglichkeit zum Log-In per Passwort deaktivieren in /etc/ssh/sshd_config 
 + 
 +Selbst wenn du ein Passwort nach allen Sicherheitsregeln erstellt hast, ist es immer **noch sicherer** gar keine Anmeldung per Passwort zuzulassen.  
 + 
 +Konfiguriere hierfür die Datei `/etc/ssh/sshd_config`
  
 ``` ```
Line 139: Line 152:
 ``` ```
  
-Anschließend noch `sshdneu starten:+#### Anschließend noch sshd neu starten:
  
 +Vorsicht: In Ubuntu wird ein Alias namens `ssh` verwendet, um `sshd` anzusprechen. Muss man wissen.
 ``` ```
-sudo systemctl restart sshd+sudo systemctl restart ssh
 ``` ```
  
-Falls es je nach Linux kein `sshd` gibt, verwende `systemctl`+Falls es je nach Linux kein `ssh` gibt, verwende `sshd`
  
 ``` ```
Line 155: Line 169:
 ``` ```
 sudo systemctl restart ssh.service sudo systemctl restart ssh.service
 +```
 +#### ssh stoppen
 +```
 +sudo systemctl stop ssh.socket
 +sudo systemctl stop ssh.service
 +```
 +
 +### Exkurs ssh vs sshd sowie systemctl
 +
 +#### systemctl
 +- `systemctl` ist ein Kommandozeilenwerkzeug zur Verwaltung von `systemd`, dem standardmäßigen **Init-System** vieler moderner Linux-Distributionen. 
 +- `systemd` ermöglicht Steuerung von **Diensten (Services)**, **Units**, **Systemzuständen** und **Konfigurationen**
 +
 +Häufige Befehle
 +|Befehl | Aktion |
 +|--|--|
 +|`systemctl start <dienst>` | Startet einen Dienst|
 +|`systemctl stop <dienst>` | Stoppt einen Dienst|
 +|`systemctl restart <dienst>` | Startet einen Dienst neu|
 +|`systemctl status <dienst>` | Zeigt den Status eines Dienstes an|
 +|`systemctl enable <dienst>` | Aktiviert einen Dienst für den automatischen Start beim Booten|
 +|`systemctl disable <dienst>` | Deaktiviert einen Dienst|
 +
 +#### ssh vs sshd
 +
 +- **Ubuntu** und **Debian** verwenden `ssh` für den Client und `ssh` auch für den Dienst
 +- **CentOS**, **Fedora**, **Arch Linux**, und **OpenSUSE** verwenden `sshd` für den Dienst 
 +
 +Der `ssh`-Client-Befehl bleibt in allen Distributionen gleich, aber der Dienstname kann entweder `ssh` oder `sshd` sein.
 +
 +### Infos über ssh
 +```
 +sudo journalctl -u ssh
 +```
 +Missglückte Anmeldeversuche per SSH werden in den Logdateien des Systems gespeichert. In den meisten Linux-Distributionen findest du diese Informationen in der Datei:
 +
 +**`/var/log/auth.log`** – Diese Datei wird auf Debian-basierten Systemen wie Ubuntu verwendet und enthält Authentifizierungsereignisse, einschließlich fehlgeschlagener SSH-Anmeldeversuche.
 +
 +
 +Du kannst die fehlgeschlagenen Anmeldeversuche mit folgendem Befehl anzeigen:
 +
 +```bash
 +grep "Failed password" /var/log/auth.log
 +```
 +
 +Geht auch mit `journalctl` verwendet:
 +
 +```bash
 +journalctl -u ssh --grep "Failed password"
 ``` ```