Vortrag von Florian Knodt am 18.04.2015 [[http://adlerweb.info/blog/2015/04/26/bitbastelei-146-ssh-unter-linux|Videoversion]] Vom Verbinden bis zum Tunneln Alle Angaben beziehen sich auf OpenSSH ====== Befehle: ====== =====Verbinden zum Rechner:===== ssh evil.server =====Verbinden zum Rechner mit Nutzerangabe===== ssh anderernutzer@evil.server =====Host-Keys anzeigen===== ssh-keygen -l -f /etc/ssh/ssh_host_ed25519_key (bzw. passender Key) =====Host-Key aus “Adressbuch” löschen===== ssh-keygen -R evil.server =====Neues Schlüsselpaar erzeugen===== ssh-keygen =====Key auf Server kopieren===== ssh-copy-id username@evil.server =====Passwort eines Keys ändern===== ssh-keygen -f ~/.ssh/id_rsa -p =====Argumente===== * -p 1234 – Port 1234 statt Port 22 nutzen * -C – Kompression einschalten * -v – verbose – zusätzliche Ausgaben zur Fehlersuche =====Lokale Weiterleitung===== ssh -L 127.0.0.1:1234:192.168.0.2:80 evil.server Lokale Verbindungen an Port 1234 werden über evil.server an 192.168.0.2 Port 80 weitergeleitet =====Remote Weiterleitung===== ssh -R 0.0.0.0:1235:127.0.0.1:80 evil.server Verbindungen auf eine beliebige IP von evil.server auf Port 1235 werden an Port 80 des lokalen PCs weitergeleitet =====SOCKS-Proxy===== ssh -D 3128 evil.server Es wird ein SOCKS-Proxy auf Port 3128 gestartet. Dieser kann z.B. mit Firefox genutzt werden =====X11-Forwarding===== ssh -XY evil.server Nun können in der Sitzung grafische Programme gestartet werden. Die Anzeige erfolgt auf dem lokalen PC =====Config-Files===== Alle Argumente und weitere Optionen können global oder pro Ziel in den Konfigurationen hinterlegt werden. Die Benutzerkonfiguration ist unter ~/.ssh/config zu finden, die Systemweite üblicherweise unter /etc/ssh/ssh_config =====Escape-Sequenz===== In einer SSH-Sitzung kann man üblicherweise mit der Tilde-Taste (~) ein internes Menü aufrufen. Die Wichtigsten Befehle: * ~? Hilfe anzeigen * ~. SSH-Verbindung beenden (auch wenn Gegenseite nicht mehr reagiert) * ~# Liste der Verbindungen (incl. Tunnel) anzeigen * ~C Interne Konsole aufrufen – hier kann man nachträglich Tunnel (-L, -R, -D) aufbauen =====Weitere Ideen:===== * ssh-agent: Kennwörter für SSH-Keys mussen nur alle X Minuten eingegeben werden * autossh: SSH-Verbindung bei Abbrüchen neu Aufbauen * SSH mit Pipes: Pipes lassen sich über SSH auch an entfernte Rechner senden * [[http://www.blackmoreops.com/2014/06/26/securing-ssh-two-factor-authentication-using-google-authenticator/|2-Faktor-Anmeldung, z.B. mit Google Authenticator]] * [[https://help.github.com/articles/what-are-github-s-ssh-key-fingerprints/|Host-Keys in DNS hinterlegen]]