SSH: Unterschied zwischen den Versionen
Zur Navigation springen
Zur Suche springen
| (55 dazwischenliegende Versionen von 7 Benutzern werden nicht angezeigt) | |||
| Zeile 1: | Zeile 1: | ||
| − | == | + | = '''S'''ecure '''SH'''ell = |
| − | |||
| − | |||
| − | |||
| − | ssh | + | * 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 | ||
| − | = | + | = '''S'''ecure '''S'''hell '''C'''opy = |
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | + | * 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 | ||
| − | + | [[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