SSH: Unterschied zwischen den Versionen

Aus Xinux Wiki
Zur Navigation springen Zur Suche springen
 
(4 dazwischenliegende Versionen desselben Benutzers werden nicht angezeigt)
Zeile 1: Zeile 1:
 
= '''S'''ecure '''SH'''ell =
 
= '''S'''ecure '''SH'''ell =
  
* Stellt eine sichere Verbindung zu einem entfernten Rechner her
+
* Das [[SSH-Protokoll]] stellt eine sichere Verbindung zu einem entfernten Rechner her
 
* Dies gelingt durch die Verschlüsselung der Datenpakete
 
* Dies gelingt durch die Verschlüsselung der Datenpakete
 
* Der Weg durch das Netz darf dabei unsicher sein
 
* Der Weg durch das Netz darf dabei unsicher sein
Zeile 21: Zeile 21:
  
 
= Konfiguration =
 
= Konfiguration =
 +
 +
== SSH-Schlüssel mit Passwort generieren ==
 +
 +
* Man sollte Passwort-Authentifikation vermeiden soweit es geht
 +
* Bei SSH kann man stattdessen mit Schlüsselpaaren arbeiten, die wie folgt generiert werden
 +
* '''ssh-keygen'''
 +
* bzw. für einen ed25519-Schlüssel
 +
* '''ssh-keygen -t ed25519'''
 +
* Den privaten Schlüssel sollte man mit einer Passphrase verschlüsseln für erhöhte Sicherheit
 +
* Danach sollten folgende Dateien da sein
 +
* '''ls ~/.ssh'''
 +
 +
id_rsa id_rsa.pub
 +
 +
* Um den öffentlichen Schlüssel auf dem SSH-Server abzulegen kann man einen der folgenden Befehle verwenden:
 +
* '''ssh-copy-id ''user''@''ip.oder.host.name''
 +
* bzw. diesen Befehl falls der Ordner ''.ssh'' schon im Homeverzeichnis vom Benutzer existiert, aber noch keine ''authorized_keys''-Datei da ist:
 +
* '''scp ~/.ssh/id_rsa.pub ''user''@''ip.oder.host.name'':~/.ssh/authorized_keys
 +
* Nun sollte nicht mehr das Passwort des remoten Benutzers abgefragt werden
 +
* Damit man nicht jedes mal den privaten Schlüssel entsperren muss, sollte man sich einen [[SSH Agent]] konfigurieren
 +
* Um die Administration der Firewall einfacher zu machen kann man sich auch den öffentlichen Schlüssel zum ''root''-User kopieren
 +
* '''su -'''
 +
* '''mkdir .ssh'''
 +
* '''cp ~''user''/.ssh/authorized_keys ~/.ssh'''
  
 
* Die Benutzerkonfiguration für SSH liegt unter ''~/.ssh/config''
 
* Die Benutzerkonfiguration für SSH liegt unter ''~/.ssh/config''
Zeile 50: Zeile 74:
 
* Automatisch kann man das folgendermaßen erreichen:
 
* Automatisch kann man das folgendermaßen erreichen:
 
* '''ssh-kegen -R ''host'' '''
 
* '''ssh-kegen -R ''host'' '''
 
 
  # Host x.x.x.x found: line 364
 
  # Host x.x.x.x found: line 364
 
  # Host x.x.x.x found: line 365
 
  # Host x.x.x.x found: line 365
Zeile 56: Zeile 79:
 
  /home/xinux/.ssh/known_hosts updated.
 
  /home/xinux/.ssh/known_hosts updated.
 
  Original contents retained as /home/xinux/.ssh/known_hosts.old
 
  Original contents retained as /home/xinux/.ssh/known_hosts.old
 +
 +
[[Kategorie:SSH]]

Aktuelle Version vom 19. August 2024, 12:57 Uhr

Secure SHell

  • Das SSH-Protokoll stellt eine sichere Verbindung zu einem entfernten Rechner her
  • Dies gelingt durch die Verschlüsselung der Datenpakete
  • Der Weg durch das Netz darf dabei unsicher sein
  • Standardmäßig lauscht SSH auf Port 22
  • ssh [Optionen] Benutzer@Zielrechner [Kommando]

Oft gebrauchte Optionen

  • -p port_nummer: gibt einen alternativen Port an
  • -i /pfad/zum/privaten/schlüssel: gibt einen alternativen privaten Schlüssel zur Authentifizierung an
  • -J benutzer@jumphost: gibt einen Proxy-Rechner an, von dem man zum Ziel Rechner springt
  • -X: Erlaubt X11 Forwarding, um grafische Programme lokal auszuführen
  • -Y: Erlaubt X11 Forwarding, unabhängig von lokalen Sicherheitseinstellungen

Secure Shell Copy

  • Ermöglicht das Kopieren von Dateien auf einen entfernten Rechner
  • Baut auf die Authentifizierung und Verschlüsselung von SSH auf

Konfiguration

SSH-Schlüssel mit Passwort generieren

  • Man sollte Passwort-Authentifikation vermeiden soweit es geht
  • Bei SSH kann man stattdessen mit Schlüsselpaaren arbeiten, die wie folgt generiert werden
  • ssh-keygen
  • bzw. für einen ed25519-Schlüssel
  • ssh-keygen -t ed25519
  • Den privaten Schlüssel sollte man mit einer Passphrase verschlüsseln für erhöhte Sicherheit
  • Danach sollten folgende Dateien da sein
  • ls ~/.ssh
id_rsa id_rsa.pub
  • Um den öffentlichen Schlüssel auf dem SSH-Server abzulegen kann man einen der folgenden Befehle verwenden:
  • ssh-copy-id user@ip.oder.host.name
  • bzw. diesen Befehl falls der Ordner .ssh schon im Homeverzeichnis vom Benutzer existiert, aber noch keine authorized_keys-Datei da ist:
  • scp ~/.ssh/id_rsa.pub user@ip.oder.host.name:~/.ssh/authorized_keys
  • Nun sollte nicht mehr das Passwort des remoten Benutzers abgefragt werden
  • Damit man nicht jedes mal den privaten Schlüssel entsperren muss, sollte man sich einen SSH Agent konfigurieren
  • Um die Administration der Firewall einfacher zu machen kann man sich auch den öffentlichen Schlüssel zum root-User kopieren
  • su -
  • mkdir .ssh
  • cp ~user/.ssh/authorized_keys ~/.ssh
  • Die Benutzerkonfiguration für SSH liegt unter ~/.ssh/config
  • In ~/.ssh/authorized_keys stehen öffentliche Schlüssel, die sich passwortlos authentifizieren dürfen

Jump Host eintragen

  • Damit man nicht jedesmal den langen Befehlt tippen muss, um einen JumpProxy zu benutzen, kann man einen Alias setzen
  • vim ~/.ssh/config
Host Alias
 User Benutzername
 Hostname Name/IP des Ziels
 ProxyJump Name/IP des Proxys
  • ssh Alias

Alternativen privaten Schlüssel benutzen

  • Falls man mehrere private Schlüssel hat kann man so seinen Default-Schlüssel wählen
  • vim ~/.ssh/config
IdentityFile /pfad/zum/privaten/schlüssel

Hostkey entfernen

  • Falls der Server seinen Hostkey ändert, warnt der SSH-Client vor einer potentiellen MITM-Attacke
  • Wenn man sich sicher ist, dass dies nicht der Fall ist, kann man den alten Hostkey entfernen und den neuen akzeptieren
  • Standardmäßig befinden sich diese unter ~/.ssh/known_hosts
  • Automatisch kann man das folgendermaßen erreichen:
  • ssh-kegen -R host
# Host x.x.x.x found: line 364
# Host x.x.x.x found: line 365
# Host x.x.x.x found: line 366
/home/xinux/.ssh/known_hosts updated.
Original contents retained as /home/xinux/.ssh/known_hosts.old