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:39] swelinux:ssh [2025/12/20 14:53] (current) – external edit 127.0.0.1
Line 3: Line 3:
 ## tl;dr ## tl;dr
  
 +**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 45: 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 54: Line 57:
 werden. werden.
  
 +## Schlüssel-Transfer
 +Der public key muss zum Server transferiert werden
  
 +### Variante 1: Linux zu Linux
 +
 +```
 +user@client: ssh-copy-id user@server
 +```
 +
 +Solltest du einen **individuellen** Namen für die Schlüssel erstellt haben,
 +nutzt du 
 +
 +```
 +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 der Datei `authorized_keys` **hizugefügt**:
 +
 +
 +```
 +user@server:~/.ssh/authorized_keys
 +``` 
 +
 +### Variante 2: Sorgenkind Windows
 +
 +Sollte der Befehl `ssh-copy` bei dir nicht installiert sein (Windows), musst du den
 +Schlüssel per `scp` auf den Server in den Ordner `.ssh` transferieren:
 +
 +```
 +user@client: scp id_rsa.pub user@server:~/.ssh
 +```
 +
 +Anschließend muss der Schlüssel manuell der Datei  `authorized_keys` auf dem **Server** hinzugefügt werden:
 +
 +```
 +user@server:~/.ssh cat id_rsa.pub >> authorized_keys
 +```
 +Hier geht es um das `cat id_rsa.pub >> authorized_keys`.
 +
 +## Einloggen nach dem Schlüssel-Transfer
 +
 +### Fall 1: Du hast keinen individuellen Namen gewählt.
 +
 +```
 +ssh user@server
 +```
 +
 +Ab jetzt reicht es, einfach, diesen Befehl zu verwenden - eine
 +Passwort-Abfrage erfolgt nicht mehr.
 +
 +Dabei verwendest du also den Befehl `ssh` ergänzt um das Argumentpaar
 +`user@server`, also dem **User**, der am Host **server** angemeldet
 +werden soll.
 +
 +### Fall 2: Du hast einen individuellen Schlüsselnamen gewählt:
 +
 +```
 +ssh -i ~/.ssh/id_rsa user@server
 +```
 +
 +### Einloggen über Alias
 +
 +Falls dir der Befehl `ssh user@server` noch zu lang ist, ist es möglich,
 +sich über einen Alias einzuloggen.
 +
 +Schreibe eine Konfiguration in die Datei `~/.ssh/config` auf dem **Client**.
 +
 +```
 +Host vmx
 +    HostName hostadresse
 +    User user
 +    IdentityFile private_key
 +```
 +
 +Ab dann reicht ein Aufruf des Befehls
 +
 +```
 +ssh vmx
 +```
 +
 +(vmx ist natürlich nur ein Platzhalter - den Namen kannst du frei
 +wählen)
 +
 +## 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`
 +
 +```
 +PasswordAuthentication no
 +PubkeyAuthentication yes
 +```
 +
 +#### Anschließend noch sshd neu starten:
 +
 +Vorsicht: In Ubuntu wird ein Alias namens `ssh` verwendet, um `sshd` anzusprechen. Muss man wissen.
 +```
 +sudo systemctl restart ssh
 +```
 +
 +Falls es je nach Linux kein `ssh` gibt, verwende `sshd`
 +
 +```
 +sudo systemctl restart ssh
 +```
 +
 + oder  
 +
 +```
 +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"
 +```
 +
 +## Banner Nachricht beim Login anzeigen
 +
 +SSH-Banner-Warnungen sind notwendig, wenn Unternehmen oder
 +Organisationen eine Warnung anzeigen möchten, um unbefugte Parteien
 +davon abzuhalten, auf einen Server zuzugreifen.
 +
 +Diese Warnungen werden direkt vor der Passwortabfrage angezeigt, damit
 +unbefugte Benutzer, die sich gerade einloggen wollen, auf die
 +Konsequenzen ihres Handelns aufmerksam gemacht werden. Typischerweise
 +beinhalten diese Warnungen rechtliche Konsequenzen, die unbefugte
 +Benutzer erleiden können, sollten sie sich entscheiden, auf den Server
 +zuzugreifen.
 +
 +Beachte, dass eine Banner-Warnung keineswegs eine Methode
 +ist, um unbefugte Benutzer vom Einloggen abzuhalten. Die Warnung dient
 +lediglich dazu, unbefugte Parteien vom Einloggen abzuschrecken.
 +
 +Wenn Du unbefugte Benutzer vom Einloggen abhalten möchten, sind
 +zusätzliche SSH-Konfigurationen erforderlich.
 +
 +**How to**
 +
 +Gehe wieder in die bekannte ssh-Konfigurationsdatei
 +`/etc/ssh/sshd_config` und suche dort nach folgender Zeile:
 +
 +```
 +# no default banner path
 +# Banner none
 +```
 +
 +Ändere den Inhalt dieser Zeilen so, dass statt `# Banner none` nun der
 +Pfad zu einer Datei steht, in der du die Informationen eingibst, die du
 +magst. Die Zeilen könnten also folgendermaßen aussehen:
 +
 +```
 +# no default banner path
 +Banner /etc/mybanner
 +```
 +
 +Mit einem Editor deiner Wahl, zum Beispiel `nano` erzeugst du nun diese
 +Datei `mybanner` und schreibst den Inhalt hinein:
 +
 +```
 +********************************************
 +** Willkommen. Aber nur mit Erlaubnis!   **
 +********************************************
 +```