thinkretro.de

Apr 17, 2015

Eigene SSH-Konfiguration verwenden

Es gibt so manche Dinge im Leben bei denen man sich fragt - wenn man sie denn einmal herausgefunden hat - warum nicht gleich so? Eines dieser Dinge ist bspw. eine eigene Konfigurationsdatei für ssh-Verbindungen. Normalerweise sieht ein Login auf einem meiner Server nämlich so aus:

$ ssh -p 12345 -i ~/.ssh/server_key user@domain

Das ist vor allem immer eine elende Tipperei. Dabei geht es auch einfacher, indem man das Ganze einfach in eine config-Datei schreibt und in seinem Homeverzeichnis unter ~/.ssh/config ablegt:

Host Servername
    HostName server.domain.de 
    Port 12345 
    User username 
    IdentityFile ~/.ssh/server_key

Danach kann man ganz einfach mit

$ ssh Servername

sich zu seinem ssh-Server verbinden. Gerade wenn man mehrere ssh-Verbindungen managen will (mit unterschiedlichen RSA-Keys) lohnt es sich eine eigene Konfigurationsdatei anzulegen.

Richtig cool ist allerdings, dass man über ssh bestimmte Ports auf dem Zielserver auf einen (nicht-privilegierten) Port auf dem lokalen Rechner mappen kann. Ich kann also bspw. meinen internen Webserver der daheim auf dem BananaPi zu administrativen Zwecken läuft auf einen beliebigen Port meines Laptops mappen und so von außerhalb bequem darauf zugreifen. Dazu muss man seine ~/.ssh/config nur wie folgt erweitern:

Host tunnel_zum_webserver 
    HostName server.domain.de 
    Port 12345 
    User username 
    IdentityFile ~/.ssh/server_key 
    LocalForward 4000 127.0.0.1:8080

Jetzt kann man mit

$ ssh -f -N tunnel_zum_webserver

eine einfache Verbindung zu seinem Webserver aufbauen und der ganze Verkehr wird über ssh getunnelt :-)

Das ganze funktioniert nicht nur mit einem Webserver, sondern auch mit allen anderen Diensten, die über das Netzwerk erreichbar sind, wie etwa Samba-Freigaben oder ein MySQL-Server... :-)