Linuxhotel Wiki

Wie ging das nochmal?

Benutzer-Werkzeuge

Webseiten-Werkzeuge


lpi2:ssh

Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen gezeigt.

Link zu der Vergleichsansicht

Beide Seiten, vorherige Überarbeitung Vorherige Überarbeitung
lpi2:ssh [2019/12/19 07:33]
ingo_wichmann gelöscht
— (aktuell)
Zeile 1: Zeile 1:
-====== ssh ====== 
-===== Einsatzzwecke von ssh ===== 
-  * Fernadministration 
-  * Dateien übers Netz kopieren 
-  * 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 ====== 
-Einloggen auf <​Rechner>​ mit <​Benutzer>:​ 
-  ssh <​Benutzer>​@<​Rechner>​ 
-In dem Zusammenhang ist die Nutzung von [[screen]] sehr hilfreich. 
- 
-Dateien auf andere Rechner kopieren: 
-  scp <​Datei>​ <​Benutzer>​@<​Rechner>:/<​Verzeichnis>​ 
-Dateien auf andere Rechner ohne lange Pfadangaben ins $HOME-Verzeichnis von <​Benutzer>​ kopieren: 
-  scp <​Datei>​ <​Benutzer>​@<​Rechner>:<​Verzeichnis>​ 
-Fingerprint Hostkey überprüfen:​ 
-  ssh-keygen -l -f /​etc/​ssh/​ssh_host_rsa_key.pub 
- 
-====== Server Keys neu erzeugen ====== 
-  rm /​etc/​ssh/​ssh_host_*key* 
-=== CentOS (ab 6), SuSE === 
-  service sshd restart 
-=== Debian === 
-  dpkg-reconfigure openssh-server 
-==== Clientseitig Server-Key löschen ==== 
-  ssh-keygen -R server-name 
-  ssh-keygen -R IP-Adressse 
- 
- 
-====== Public-Private-Key Authentifizierung ====== 
-===== Benutzerauthentifizierung ===== 
-Als Nutzer Schlüsselpaar erzeugen: 
-  ssh-keygen -C "​Kommentar"​ 
-Public-Key auf anderen Rechner übertragen:​ 
-  ssh-copy-id ​ -i .ssh/​id_rsa.pub nutzer05@notebook05 
-oder alternativ: 
-  cat .ssh/​id_rsa.pub | ssh nutzer05@notebook05 "cat >> .ssh/​authorized_keys"​ 
-  ssh nutzer05@notebook05 "mkdir -m 700 .ssh" 
-  ssh nutzer05@notebook05 "chmod 600 .ssh/​authorized_keys"​ 
- 
-===== Serverseitig Passwortauthentifizierung abschalten ===== 
-''/​etc/​ssh/​sshd_config'':​ 
-<​file>​ 
-  UsePAM no 
-  PasswordAuthentication no 
-</​file>​ 
- 
-===== ssh-agent ===== 
-Schlüssel dem ''​ssh-agent''​ hinzufügen:​ 
-  ssh-add -i .ssh/id_dsa 
- 
-Dem ''​ssh-agent''​ verfügbare Schlüssel anzeigen: 
-  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 ==== 
-  ssh -A nutzer17@notebook17 
-  ssh -A nutzer07@notebook07 
- 
- 
-==== 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 "​mitbenutzen"​. Dazu sucht root nach  
-  * Prozess-Nummern ( ''​-t''​ ),  ​ 
-  * die dem verbundenen Benutzer gehören ( ''​-u''​ ),  
-  * die eine IP-Verbindung geöffnent haben ( ''​-i''​ ), 
-  * deren Namen mit der Zeichenkette ''​sshd''​ beginnt ( ''​-c''​ ) 
- 
-  PIDS="​$(lsof -a -i -c sshd -u nutzer05 -t)" 
- 
-Weiter sucht er nach dazu passenden Socket-Dateien ( ''/​tmp/​ssh-*/​agent.$pid''​ ), und speichert die letzte ( ''​tail -n 1''​ ) in der Variablen ''​SSH_AUTH_SOCK''​ 
- 
-  export SSH_AUTH_SOCK=$(for pid in $PIDS; do ls /​tmp/​ssh-*/​agent.$pid;​ done 2>/​dev/​null | tail -n 1) 
- 
-Auch ein ssh-agent auf dem client-Rechner kann ähnlich mitgenutzt werden: 
- 
-  export SSH_AGENT_PID=$(pgrep -u nutzer05 -x '​ssh-agent'​) 
-  SSH_AUTH_SOCK=$(lsof -a -U -p $SSH_AGENT_PID -F n | tail -n 1) 
-  export SSH_AUTH_SOCK=${SSH_AUTH_SOCK#​n} 
-  ssh nutzer07@notebook07 
- 
-====== Fehlersuche ====== 
-  ssh -v nutzer06@notebook06 
-  ssh -vv nutzer06@notebook06 
- 
-====== SSH Tunnel ====== 
-===== TCP Tunnel ===== 
-==== Vorwärts ==== 
-  ssh -L <lokaler Port>:<​Zielrechner>:<​Zielport>​ <​Benutzer>​@<​ssh-Server>​ 
-oder 
-  ssh -f -L 8080:​www.linuxhotel.de:​80 nutzer03@notebook03 
-  curl localhost:​8080 
- 
-==== X-Weiterleitung ==== 
-  ssh -X <​Benutzer>​@<​Rechner>​ 
-oder 
-  ssh -f -X notebook09 xterm 
- 
-Dazu muß in der Datei ''/​etc/​ssh/​sshd_config''​ des Servers folgender Eintrag vorhanden sein: 
-<​file>​X11Forwarding yes</​file>​ 
- 
-==== Rückwärts ==== 
-  ssh -R <Port auf ssh-Server>:<​Zielrechner>:<​Zielport>​ <​Benutzer>​@<​ssh-Server>​ 
- 
-Dazu muß in der Datei ''/​etc/​ssh/​sshd_config''​ des Servers folgender Eintrag vorhanden sein: 
-<​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 ===== 
-Dies ist nur ein Beispiel um zu zeigen, dass das geht. Eine modernere Variante ist die Funktion ''​PermitTunnel''​ von ssh zu nutzen. ​ 
- 
-==== Einfache Variante ==== 
-  pppd noauth nodetach pty "ssh root@notebook05 pppd idle 300 nodetach notty noauth"​ 192.168.2.1:​192.168.2.2 
- 
-==== Komplexe Variante ==== 
-PPP over SSH - Tunnel bauen mit Standartwerkzeugen 
- 
-Die Lösung ist noch nicht ausreichend getestet und wahrscheinlich unvollständig.Hier sind die Bausteine, die ich gerade nutze: 
- 
-  pppd 
-  ssh 
-  sudo 
- 
-Damit baue ich eine solche Verbindung: 
- 
-Notebook --> PPP-over-SSH --> Router --> Netzwerk ( 172.16.240.0/​24 ) 
- 
-==== Zuerst die Einstellungen auf dem Router==== 
-=== SSH Client Konfiguration === 
-''/​home/​user/​.ssh/​authorized_keys'':​ 
-<​file>​ 
-command="/​usr/​bin/​sudo /​usr/​sbin/​pppd nodetach notty noauth 10.0.0.1:​10.0.0.2"​ ssh-dss laj4flksa7dflkj ... ( der Schlüssel ) ... 
-</​file>​ 
-Dieser Eintrag führt dazu, daß der ''​sshd''​ für den Benutzer "​user"​ den angegebenen Befehl ausführt, wenn der sich mit dem entsprechenden Schlüssel authentifiziert. 
- 
-Mehr Informationen dazu unter ''​man sshd'',​ im Abschnitt "​AUTHORIZED_KEYS FILE FORMAT"​ 
- 
- 
-=== sudo Konfiguration === 
-''/​etc/​sudoers'',​ editieren mit dem Befehl ''​visudo'':​ 
-<​file>​user router=NOPASSWD:​ /​usr/​sbin/​pppd *</​file>​ 
- 
-oder strenger: 
-<​file>​user router=NOPASSWD:​ /​usr/​sbin/​pppd nodetach notty noauth 
-10.0.0.1\:​10.0.0.2</​file>​ 
- 
-Dieser Eintrag führt dazu, daß die Benutzer "​user"​ und "​andereruser"​ auf 
-dem Rechner "​router"​ den Befehl /​usr/​sbin/​pppd mit den angegebenen 
-Optionen mit root-Rechten ausführen dürfen. 
- 
- 
-==== Dann die Einstellungen auf dem Notebook ==== 
-=== sudo Konfiguration === 
-''/​etc/​sudoers'',​ editieren mit dem Befehl ''​visudo'':​ 
-<​file>​ 
-User_Alias PPP = user, andereruser 
-PPP notebook=NOPASSWD:​ /​usr/​sbin/​pppd * 
-PPP notebook=NOPASSWD:​ /sbin/route add -net 172.16.240.0/​24 gw 10.0.0.2 
-</​file>​ 
- 
-oder strenger: 
-<​file>​ 
-User_Alias PPP = user, andereruser 
-PPP notebook=NOPASSWD:​ /​usr/​sbin/​pppd noauth nodetach persist demand 
-connect /bin/true pty "ssh user@router"​ 
-PPP notebook=NOPASSWD:​ /sbin/route add -net 172.16.240.0/​24 gw 10.0.0.2 
-</​file>​ 
- 
-Dieser Eintrag führt dazu, daß die Benutzer "​user"​ und "​andereruser"​ auf 
-dem Rechner "​notebook"​ die Befehle ''/​sbin/​route''​ und ''/​usr/​sbin/​pppd''​ mit 
-den angegebenen Optionen mit root-Rechten ausführen dürfen. ​ 
- 
-====== sshd als ftp-Server Ersatz ====== 
-scponly: https://​github.com/​scponly/​scponly 
-====== Links ====== 
-  * [[ http://​www.jfranken.de/​homepages/​johannes/​vortraege/​ssh1_inhalt.de.html | SSH Grundlagen von Johannes Franken ]] 
-  * [[ http://​www.jfranken.de/​homepages/​johannes/​vortraege/​ssh2_inhalt.de.html | SSH Tunnels von Johannes Franken ]] 
-  * [[ http://​www.jfranken.de/​homepages/​johannes/​vortraege/​ssh3_inhalt.de.html | Firewalls durchbohren von Johannes Franken ]] 
-  * [[ http://​www.employees.org/​~satch/​ssh/​faq/​ssh-faq.html | SSH FAQ englisch ]] 
-  * [[ http://​www.openssh.org/​de/​index.html | SSH Homepage deutsch ]]