Hier werden die Unterschiede zwischen zwei Versionen gezeigt.
| Nächste Überarbeitung | Vorherige Überarbeitung | ||
|
fortgeschrittene:ssh [2010/06/30 15:25] 127.0.0.1 Externe Bearbeitung |
fortgeschrittene:ssh [2023/01/27 15:37] (aktuell) ingo_wichmann |
||
|---|---|---|---|
| Zeile 1: | Zeile 1: | ||
| - | ====== Einsatzzwecke von ssh ====== | + | ====== ssh ====== |
| - | * Fernadministration | + | |
| - | * Dateien übers Netz kopieren | + | |
| - | * Tunnel bauen | + | |
| - | ====== Vorteile von ssh ====== | + | ===== Server Keys ===== |
| - | * Sicherheit durch Public-Private Key Verschlüsselung | + | ==== Server Keys neu erzeugen ==== |
| - | * Mehrere Benutzer können einen Account gemeinsam Nutzen | + | rm /etc/ssh/ssh_host_*key* |
| - | * Single Sign On möglich | + | |
| - | ====== Grundfunktionen ====== | + | === CentOS (ab 6), SuSE === |
| - | Einloggen auf <Rechner> mit <Benutzer>: | + | service sshd restart |
| - | ssh <Benutzer>@<Rechner> | + | === Debian === |
| - | In dem Zusammenhang ist die Nutzung von [[screen]] sehr hilfreich. | + | dpkg-reconfigure openssh-server |
| - | Dateien auf andere Rechner kopieren: | + | ==== Clientseitig Server-Key löschen ==== |
| - | scp <Datei> <Benutzer>@<Rechner>:/<Verzeichnis> | + | ssh-keygen -R server-name |
| - | Dateien auf andere Rechner ohne lange Pfadangaben ins $HOME-Verzeichnis von <Benutzer> kopieren: | + | ssh-keygen -R IP-Adressse |
| - | scp <Datei> <Benutzer>@<Rechner>:<Verzeichnis> | + | |
| - | Fingerprint Hostkey überprüfen: | + | |
| - | ssh-keygen -l -f /etc/ssh/ssh_host_rsa_key.pub | + | |
| + | ==== Im DNS ablegen ==== | ||
| + | DNS Resource Records erzeugen: | ||
| + | ssh-keygen -r servername | ||
| + | oder | ||
| + | ssh-keyscan -D servername | ||
| + | |||
| + | und in der [[bind|DNS Zonendatei des primären Nameservers]] hinterlegen. | ||
| + | |||
| + | === Clientseitige Einstellungen === | ||
| + | Damit der OpenSSH Client den SSHFP-Einträgen im DNS vertraut muss DNSSEC für die Zone aktiviert sein. | ||
| + | |||
| + | <file txt ~/.ssh/config> | ||
| + | VerifyHostKeyDNS yes | ||
| + | </file> | ||
| + | |||
| + | Ab glibc Version 2.31: | ||
| + | <file txt /etc/resolv.conf> | ||
| + | options trust-ad | ||
| + | </file> | ||
| + | |||
| + | Falls systemd-resolved genutzt wird: | ||
| + | <file txt /etc/systemd/resolved.conf.d/override.conf> | ||
| + | [Resolve] | ||
| + | DNSSEC=allow-downgrade | ||
| + | # oder | ||
| + | # DNSSEC=yes | ||
| + | </file> | ||
| - | ====== Server Keys neu erzeugen ====== | ||
| - | Debian: | ||
| - | rm /etc/ssh/ssh_host_*key* | ||
| - | dpkg-reconfigure openssh-server | ||
| ====== Public-Private-Key Authentifizierung ====== | ====== Public-Private-Key Authentifizierung ====== | ||
| + | ===== Benutzerauthentifizierung ===== | ||
| Als Nutzer Schlüsselpaar erzeugen: | Als Nutzer Schlüsselpaar erzeugen: | ||
| - | ssh-keygen -d -C "Kommentar" | + | ssh-keygen -C "Kommentar" |
| Public-Key auf anderen Rechner übertragen: | Public-Key auf anderen Rechner übertragen: | ||
| - | ssh-copy-id -i .ssh/id_dsa.pub nutzer05@notebook05 | + | ssh-copy-id -i .ssh/id_rsa.pub nutzer05@notebook05 |
| - | Alternativ: | + | oder alternativ: |
| - | cat .ssh/id_dsa.pub | ssh nutzer05@notebook05 "cat >> .ssh/authorized_keys" | + | cat .ssh/id_rsa.pub | ssh nutzer05@notebook05 "cat >> .ssh/authorized_keys" |
| - | ssh nutzer05@notebook05 "chmod 400 .ssh/authorized_keys" | + | ssh nutzer05@notebook05 "mkdir -m 700 .ssh" |
| + | ssh nutzer05@notebook05 "chmod 600 .ssh/authorized_keys" | ||
| ===== Serverseitig Passwortauthentifizierung abschalten ===== | ===== Serverseitig Passwortauthentifizierung abschalten ===== | ||
| Zeile 47: | Zeile 65: | ||
| ssh-add -i .ssh/id_dsa | ssh-add -i .ssh/id_dsa | ||
| - | Bei SuSE 11.0 wird der ''ssh-agent'' bei der Anmeldung nur gestartet, wenn das Verzeichnis ''~/.ssh'' existiert: | + | Dem ''ssh-agent'' verfügbare Schlüssel anzeigen: |
| - | mkdir -m 700 ~/.ssh | + | ssh-add -l |
| + | (( Bei SuSE 11.0 wird der ''ssh-agent'' bei der Anmeldung nur gestartet, wenn das Verzeichnis ''~/.ssh'' existiert: | ||
| + | mkdir -m 700 ~/.ssh | ||
| + | )) | ||
| ==== Agent-Forwarding nutzen ==== | ==== Agent-Forwarding nutzen ==== | ||
| ssh -A nutzer17@notebook17 | ssh -A nutzer17@notebook17 | ||
| ssh -A nutzer07@notebook07 | ssh -A nutzer07@notebook07 | ||
| - | ==== SSH skriptbar über mehrere Hops mit ssh-agent ==== | ||
| - | Befehl per Skript auf notebook16 ausführen, notebook16 ist nur via notebook15 zu erreichen: | ||
| - | ssh-agent bash -c "ssh-add .ssh/id_dsa; ssh -A nutzer15@notebook15 ssh nutzer16@notebook16 ls" | ||
| ==== Sicherheitseinschränkung bei Agent-Forwarding ==== | ==== Sicherheitseinschränkung bei Agent-Forwarding ==== | ||
| Zeile 82: | Zeile 100: | ||
| ssh -vv nutzer06@notebook06 | ssh -vv nutzer06@notebook06 | ||
| - | ====== sshd als ftp-Server Ersatz ====== | + | ====== SSH Tunnel ====== |
| - | scponly: http://www.sublimation.org/scponly/ | + | ===== TCP Tunnel ===== |
| - | + | ==== Vorwärts ==== | |
| - | ====== TCP Tunnel ====== | + | |
| - | Allgemein: | + | |
| ssh -L <lokaler Port>:<Zielrechner>:<Zielport> <Benutzer>@<ssh-Server> | ssh -L <lokaler Port>:<Zielrechner>:<Zielport> <Benutzer>@<ssh-Server> | ||
| + | oder | ||
| + | ssh -f -L 8080:www.linuxhotel.de:80 nutzer03@notebook03 | ||
| + | curl localhost:8080 | ||
| - | Spezialfall X-Weiterleitung: | + | ==== X-Weiterleitung ==== |
| ssh -X <Benutzer>@<Rechner> | ssh -X <Benutzer>@<Rechner> | ||
| + | oder | ||
| + | ssh -f -X notebook09 xterm | ||
| - | Dazu muß in der Datei ''/etc/ssh/sshd_config'' folgender Eintrag vorhanden sein: | + | Dazu muß in der Datei ''/etc/ssh/sshd_config'' des Servers folgender Eintrag vorhanden sein: |
| <file>X11Forwarding yes</file> | <file>X11Forwarding yes</file> | ||
| - | Tunnel Rückwärts: | + | ==== Rückwärts ==== |
| ssh -R <Port auf ssh-Server>:<Zielrechner>:<Zielport> <Benutzer>@<ssh-Server> | ssh -R <Port auf ssh-Server>:<Zielrechner>:<Zielport> <Benutzer>@<ssh-Server> | ||
| - | Dazu muß in der Datei ''/etc/ssh/sshd_config'' folgender Eintrag vorhanden sein: | + | Dazu muß in der Datei ''/etc/ssh/sshd_config'' des Servers folgender Eintrag vorhanden sein: |
| <file>GatewayPorts yes</file> | <file>GatewayPorts yes</file> | ||
| + | ==== Socks Proxy ==== | ||
| + | für firefox, curl, ... | ||
| + | ssh -f -D 1080 nutzer03@notebook09 | ||
| + | curl --socks5 localhost:1080 www.linuxhotel.de | ||
| - | ====== ppp over ssh ====== | + | ===== ppp over ssh ===== |
| - | Dies ist nur ein Beispiel um zu zeigen das das geht. In der Praxis würde ich immer OpenVPN oder ähnliche Lösungen verwenden. | + | Dies ist nur ein Beispiel um zu zeigen, dass das geht. Eine modernere Variante ist die Funktion ''PermitTunnel'' von ssh zu nutzen. |
| - | ===== Einfache Variante ===== | + | ==== Einfache Variante ==== |
| pppd noauth nodetach pty "ssh root@notebook05 pppd idle 300 nodetach notty noauth" 192.168.2.1:192.168.2.2 | pppd noauth nodetach pty "ssh root@notebook05 pppd idle 300 nodetach notty noauth" 192.168.2.1:192.168.2.2 | ||
| - | ===== Komplexe Variante ===== | + | ==== Komplexe Variante ==== |
| PPP over SSH - Tunnel bauen mit Standartwerkzeugen | PPP over SSH - Tunnel bauen mit Standartwerkzeugen | ||
| Zeile 167: | Zeile 191: | ||
| den angegebenen Optionen mit root-Rechten ausführen dürfen. | den angegebenen Optionen mit root-Rechten ausführen dürfen. | ||
| + | ====== sshd als ftp-Server Ersatz ====== | ||
| + | scponly: https://github.com/scponly/scponly | ||
| ====== Links ====== | ====== Links ====== | ||
| * [[ http://www.jfranken.de/homepages/johannes/vortraege/ssh1_inhalt.de.html | SSH Grundlagen von Johannes Franken ]] | * [[ http://www.jfranken.de/homepages/johannes/vortraege/ssh1_inhalt.de.html | SSH Grundlagen von Johannes Franken ]] | ||