lpi1:ssh
Unterschiede
Hier werden die Unterschiede zwischen zwei Versionen der Seite angezeigt.
| Beide Seiten, vorherige ÜberarbeitungVorherige ÜberarbeitungNächste Überarbeitung | Vorherige Überarbeitung | ||
| lpi1:ssh [2015/10/27 14:43] – Externe Bearbeitung 127.0.0.1 | lpi1:ssh [2025/08/14 12:24] (aktuell) – Externe Bearbeitung 127.0.0.1 | ||
|---|---|---|---|
| Zeile 1: | Zeile 1: | ||
| - | **Todo**: anpassen des Unit-Files bei systemd ((als Default werden alle Prozesse einer proc group bei restart oder stop gekillt. Das ist nicht das, was man bei ssh o.ä. will. | + | ====== ssh ====== |
| + | |||
| + | ===== ssh in firewalld freischalten ===== | ||
| + | |||
| + | **Enable firewall rule for ssh.** | ||
| + | |||
| + | sudo firewall-cmd --permanent --add-service=ssh | ||
| + | success | ||
| + | |||
| + | **Reload firewall rules.** | ||
| + | |||
| + | sudo firewall-cmd --reload | ||
| + | success | ||
| + | |||
| + | oder Firewall abschalten: | ||
| + | |||
| + | systemctl stop firewalld.service | ||
| - | Unit-File nach / | ||
| - | und das Verhalten ist wie früher. | ||
| - | Bei vielen Distris ist das Standard-Unit-File mit | ||
| - | KillMode=control-group. D.h. man müsste immer und überall bei jeder | ||
| - | ssh-Installation diese Änderung machen, wenn man nicht irgendwann ein | ||
| - | doofes Problem haben will)) | ||
| - | ====== ssh ====== | ||
| ===== Einsatzzwecke von ssh ===== | ===== Einsatzzwecke von ssh ===== | ||
| * Fernadministration | * Fernadministration | ||
| * Dateien übers Netz kopieren | * Dateien übers Netz kopieren | ||
| * Tunnel bauen | * Tunnel bauen | ||
| - | |||
| - | ===== Vorteile von ssh ===== | ||
| - | * Sicherheit durch Public-Private Key Verschlüsselung | ||
| - | * Mehrere Benutzer können einen Account gemeinsam Nutzen | ||
| - | * Single Sign On möglich | ||
| ====== Grundfunktionen ====== | ====== Grundfunktionen ====== | ||
| Zeile 29: | Zeile 33: | ||
| ~Strg+z | ~Strg+z | ||
| - | Dateien auf andere Rechner kopieren: (( manchmal ist hier auch [[tar# | + | Dateien auf andere Rechner kopieren: (( manchmal ist hier auch [[rsync]] oder [[tar# |
| scp < | scp < | ||
| Dateien auf andere Rechner ohne lange Pfadangaben ins $HOME-Verzeichnis von < | Dateien auf andere Rechner ohne lange Pfadangaben ins $HOME-Verzeichnis von < | ||
| - | scp < | + | scp < |
| - | Fingerprint Hostkey überprüfen: | + | |
| - | ssh-keygen -l -f / | + | |
| - | ====== Server Keys neu erzeugen | + | ====== Syntax sshd prüfen ====== |
| - | === Debian | + | Vor dem Neustart des Dienstes die Konfigurationsdatei auf Syntaxfehler prüfen: |
| + | sshd -t | ||
| + | oder ausführlicher: | ||
| + | sshd -dddt | ||
| + | ====== Server Keys ====== | ||
| + | ===== Fingerprint Hostkey überprüfen | ||
| + | ssh-keygen -l -f / | ||
| + | |||
| + | ===== Server Key aus known_hosts entfernen ===== | ||
| + | Name und IP-Adresse aus known_hosts entfernen: | ||
| + | |||
| + | ssh-keygen -R notebook02 | ||
| + | ssh-keygen -R 192.168.1.202 | ||
| + | |||
| + | ===== Server Keys neu erzeugen ===== | ||
| + | löschen: | ||
| rm / | rm / | ||
| + | === Debian === | ||
| dpkg-reconfigure openssh-server | dpkg-reconfigure openssh-server | ||
| + | === SuSE / RedHat === | ||
| + | service sshd restart | ||
| ====== Public-Private-Key Authentifizierung ====== | ====== Public-Private-Key Authentifizierung ====== | ||
| - | Als Nutzer Schlüsselpaar erzeugen: | + | ===== Als Nutzer Schlüsselpaar erzeugen |
| - | ssh-keygen | + | Einfach: |
| - | ssh-keygen -t ed25519 | + | ssh-keygen |
| - | Public-Key auf anderen Rechner übertragen: | + | oder für Schlüssel mit Kommentar |
| - | ssh-copy-id | + | ssh-keygen -t ed25519 |
| - | oder alternativ: | + | |
| - | | + | ===== Public-Key auf anderen Rechner übertragen |
| - | ssh nutzer05@notebook06 | + | ssh-copy-id nutzer05@notebook06 |
| + | oder von Hand: | ||
| + | ssh nutzer05@notebook06 'mkdir -m 700 ~/.ssh' | ||
| + | | ||
| + | ssh nutzer05@notebook06 | ||
| ===== Serverseitig Passwortauthentifizierung abschalten ===== | ===== Serverseitig Passwortauthentifizierung abschalten ===== | ||
| - | '' | + | |
| - | <file> | + | <file txt / |
| - | UsePAM no | + | UsePAM |
| + | KbdInteractiveAuthentication | ||
| PasswordAuthentication no | PasswordAuthentication no | ||
| </ | </ | ||
| + | |||
| + | ==== Syntax prüfen ==== | ||
| + | sshd -t | ||
| + | |||
| + | ==== Dienst neu starten ==== | ||
| + | systemctl restart ssh.service | ||
| + | |||
| + | ===== ssh-agent ===== | ||
| + | Schlüssel dem '' | ||
| + | ssh-add .ssh/id_rsa | ||
| + | |||
| + | ((Bei openSuSE 11.0 wird der '' | ||
| + | mkdir -m 700 ~/.ssh | ||
| + | )) | ||
| + | |||
| + | Prüfen, welche Schlüssel der agent kennt: | ||
| + | ssh-add -l | ||
| ===== Nutzer Zugriff beschränken ===== | ===== Nutzer Zugriff beschränken ===== | ||
| ==== mit authorized_keys command ==== | ==== mit authorized_keys command ==== | ||
| - | //Problem: die Datei '' | + | //Problem: die Datei '' |
| <file txt ~/ | <file txt ~/ | ||
| - | command="/ | + | restrict,command=" |
| </ | </ | ||
| ==== mit Match ==== | ==== mit Match ==== | ||
| <file txt / | <file txt / | ||
| + | … | ||
| Match User nutzer12 | Match User nutzer12 | ||
| - | ForceCommand /usr/local/bin/cat_messages | + | ForceCommand /usr/bin/who |
| </ | </ | ||
| - | <file bash / | + | ====== |
| - | #!/bin/sh | + | ssh -v nutzer06@notebook06 |
| - | /bin/cat / | + | ssh -vv nutzer06@notebook06 |
| - | </ | + | |
| - | ===== ssh-agent | + | |
| - | Schlüssel dem '' | + | |
| - | ssh-add .ssh/ | + | |
| - | + | ||
| - | ((Bei openSuSE 11.0 wird der '' | + | |
| - | mkdir -m 700 ~/.ssh | + | |
| - | )) | + | |
| - | ==== Agent-Forwarding nutzen | + | |
| - | ssh -A nutzer17@notebook17 | + | |
| - | ssh nutzer07@notebook07 | + | |
| - | ==== SSH über mehrere Hops ==== | + | ====== SSH über mehrere Hops ====== |
| < | < | ||
| +--------+ | +--------+ | ||
| | ssh | | Hop Server | | server | | ssh | | Hop Server | | server | ||
| - | | client | | notebook01 | | notebook02 | | + | | client | _ _ _ ssh _ _ _ | notebook01 | | notebook02 | |
| - | | | ===ssh=over=netcat=tunnel====================> | + | | | ================ssh========tunnel============> |
| - | +--------+ | + | +--------+ |
| </ | </ | ||
| - | ((ausführlicher beschrieben unter http:// | ||
| - | '' | + | ===== Client ===== |
| - | ProxyCommand ssh {gw} ' | + | centos 7.4, debian 9, ubuntu 18.04: |
| - | habe ich aber noch nicht gestestet )) | + | |
| - | === Client === | + | |
| - | '' | + | |
| - | < | + | mit einer '' |
| + | |||
| + | < | ||
| + | Host notebook02 | ||
| + | Hostname notebook02.linuxhotel.de | ||
| + | ProxyJump notebook01.linuxhotel.de | ||
| + | </ | ||
| + | |||
| + | ssh notebook02 | ||
| + | |||
| + | Bei älteren SSH-Versionen: | ||
| + | |||
| + | centos 7, debian 8, ubuntu 16.04: | ||
| + | |||
| + | ssh -o ProxyCommand=" | ||
| + | |||
| + | mit einer '' | ||
| + | |||
| + | <file text ~/ | ||
| + | Host notebook02 | ||
| + | Hostname notebook02.linuxhotel.de | ||
| + | ProxyCommand ssh -W %h:%p notebook01.linuxhotel.de | ||
| + | </ | ||
| + | |||
| + | ssh notebook02 | ||
| + | |||
| + | Bei noch älteren SSH-Versionen muss zusätzlich '' | ||
| + | |||
| + | debian 6, centos 6: | ||
| + | <file text ~/ | ||
| Host notebook02 | Host notebook02 | ||
| Hostname notebook02.linuxhotel.de | Hostname notebook02.linuxhotel.de | ||
| Zeile 109: | Zeile 167: | ||
| </ | </ | ||
| - | === Hop Server === | + | ===== Hop Server |
| - | //optional//, damit sich der Benutzer nicht auf dem Hop-Server einloggen kann | + | //optionale// Absicherung, damit sich der Benutzer nicht auf dem Hop-Server einloggen kann |
| - | '' | + | <file txt / |
| - | <file> | + | # nutzer02 wird auf notebook02 weitergeleitet: |
| Match User nutzer02 | Match User nutzer02 | ||
| - | ForceCommand | + | ForceCommand |
| + | |||
| + | # nutzer01 wird auf den mit der Option -W gewählten Server weitergeleitet: | ||
| + | Match User nutzer01 | ||
| + | ForceCommand ssh %u@%h $SSH_ORIGINAL_COMMAND | ||
| </ | </ | ||
| - | === testen | + | <file txt ~/ |
| - | ssh notebook02 | + | restrict, |
| + | </ | ||
| + | ===== Agent-Forwarding nutzen | ||
| + | ssh -A notebook17 | ||
| + | ssh notebook07 | ||
| + | besser, mit Konfigdatei: | ||
| + | <file txt ~/ | ||
| + | Host notebook17 | ||
| + | ForwardAgent yes | ||
| + | IdentityFile ~/ | ||
| + | IdentitiesOnly yes | ||
| + | </ | ||
| ==== Sicherheitseinschränkung bei Agent-Forwarding ==== | ==== Sicherheitseinschränkung bei Agent-Forwarding ==== | ||
| - | Mit eingeschaltetem Agent-Forwarding sollte man nur vertrauenswürdige Server besuchen. root-Benutzer auf dem Server können während die Verbindung besteht den ssh-Agent " | + | Sockets zu den ssh-agents anzeigen: |
| - | * Prozess-Nummern ( '' | + | ls -ld / |
| - | * die dem verbundenen Benutzer gehören ( '' | + | |
| + | root kann den Socket für das Agent-Forwarding mitnutzen: (( Mit eingeschaltetem Agent-Forwarding sollte man nur vertrauenswürdige Server besuchen. root-Benutzer auf dem Server können während die Verbindung besteht den ssh-Agent " | ||
| + | * Prozess-Nummern ( '' | ||
| * die eine IP-Verbindung geöffnent haben ( '' | * die eine IP-Verbindung geöffnent haben ( '' | ||
| - | * deren Namen mit der Zeichenkette '' | + | * deren Namen mit der Zeichenkette '' |
| + | * und die dem verbundenen Benutzer gehören ( '' | ||
| + | )) | ||
| + | |||
| + | PIDS=" | ||
| - | PIDS=" | + | (( Weiter sucht er nach dazu passenden Socket-Dateien ( ''/ |
| - | Weiter sucht er nach dazu passenden Socket-Dateien | + | export SSH_AUTH_SOCK=$(for pid in $PIDS; do echo / |
| - | | + | ssh nutzer05@notebook07 |
| Auch ein ssh-agent auf dem client-Rechner kann ähnlich mitgenutzt werden: | Auch ein ssh-agent auf dem client-Rechner kann ähnlich mitgenutzt werden: | ||
| - | | + | |
| - | SSH_AUTH_SOCK=$(lsof | + | |
| - | export SSH_AUTH_SOCK=${SSH_AUTH_SOCK# | + | |
| - | ssh nutzer07@notebook07 | + | |
| - | ====== Fehlersuche ====== | + | Weitere Diskussion auch: [[https:// |
| - | ssh -v nutzer06@notebook06 | + | |
| - | ssh -vv nutzer06@notebook06 | + | |
| ====== SSH Tunnel ====== | ====== SSH Tunnel ====== | ||
| Zeile 167: | Zeile 241: | ||
| help | help | ||
| -L <lokaler Port>:< | -L <lokaler Port>:< | ||
| + | |||
| + | ===== SOCKS Tunnel ===== | ||
| + | z.B. für Firefox: | ||
| + | |||
| + | ssh -D 1080 < | ||
| ===== IP Tunnel / VPN ===== | ===== IP Tunnel / VPN ===== | ||
lpi1/ssh.1445957029.txt.gz · Zuletzt geändert: 2015/12/11 11:42 (Externe Bearbeitung)
