SSH Tutorial

(Open)SSH ist ein unverzichtbares Tool wenn man mit Linux oder UNIX Maschinen zu tun hat. Es ermöglicht den Remotezugang zu einem Rechner über eine Netzwerkverbindung. Die Kommunikation ist dabei verschlüsselt und es findet eine Authentifizierung über Passwörter oder Zertifikate statt.

Im Gegensatz zu Remote Desktop Services wie VNC und anderen wird üblicherweise nicht der Desktop übertragen. Dies hat den Vorteil, dass die übertragenen Daten gering bleiben. Eine SSH Session fühlt sich daher auch über eine langsame Verbindung sehr gut an und es kann produktiv gearbeitet werden.

Anwendungsgebiete

  • Wartung und Steuerung eines headless Servers

  • Zugangspunkt im eigenen Netzwerk, um aus einem externen Netz auf eigene Daten zugreifen zu können.

  • Umgehen von Barrieren gegen Netzneutralität. Dies ist ein entscheidender Punkt, auf den ich im Folgenden eingehen möchte

An immer mehr Orten wird zur Zeit aktiv in die Freiheit eines Internetnutzers eingegriffen. Seiten werden blockiert, gefiltert, bestimmte Dienste verboten und viel mehr. Dafür werden in Netzwerken von Schulen, Universitäten und Firmen Proxys installiert, die bestimmte Seiten und Zugriffe auf Ports blockieren. Die meisten dieser Proxys blocken allerdings nicht Verbindungen auf Port 443 (https). Dies kann man sich zu Nutze machen und den SSH-Server zu Hause auf diesen Port legen. Dafür muss in der /etc/ssh/sshd_conf die folgende Zeile eingefügt werden:

Port 443

Dies hat außerdem den Vorteil, dass die meisten Proxys aufgrund der Verschlüsselung (noch) keinen https-Verkehr analysieren und daher kann eine SSH-Session über diesen Port ebenfalls unerkannt bleiben. Wenn man nun auf seinem Server noch einen dynamischen DNS Service nutzt muss man sich nicht ständig die eigene IP Adresse merken sondern kann über eine feste Adresse  nach Hause telefonieren. Die Verbindung kann dann über

ssh -p 443 username@account.dyndns.org

hergestellt werden. Nun wird man (nach eingeben des Passworts) mit einer Shell auf seinem Rechner zu Hause begrüßt und kann darauf arbeiten, als wäre man lokal angemeldet. Eine Anmeldung als root sollte aus Sicherheitsgründen vermieden werden und wird per default auch vom Server nicht gestattet. Sein Rechte kann man dann im Nachhinein in einer Shell mit ‘su’ erhöhen.

Wer nicht immer ein Passwort eingeben, oder sich automatisiert anmelden will, der kann sich ein Zertifikat auf dem Client generieren lassen, dieses auf den Server kopieren und kann sich nun passwortfrei anmelden. Wie dies funktioniert ist hier beschrieben.

Abgerundet wird die SSH Experience noch durch das Programm screen. Dieses ermöglicht es, Programme und Shells auf dem Server zu öffnen, die beim Ausloggen nicht geschlossen werden. Beim nächsten Anmelden ist man automatisch wieder in der Session und kann weiterarbeiten. So kann man beispielsweise einen IRC Client die ganze Zeit auf dem Server laufen lassen und sich gelegentlich zu ihm verbinden und schauen, ob etwas neues passiert ist. Ein einfaches Tutorial für screen in Kombination mit SSH findet sich hier.

Dieses Tutorial wird noch weiter ausgebaut und ein nächster interessanter Schritt sind auf jeden Fall noch SSH Tunnel, die es ermöglichen den kompletten Netzwerkverkehr von einzelnen Programmen umzuleiten.