{"id":275,"date":"2021-08-04T23:56:02","date_gmt":"2021-08-04T21:56:02","guid":{"rendered":"https:\/\/www.ritter.cc\/?page_id=275"},"modified":"2021-08-04T23:59:12","modified_gmt":"2021-08-04T21:59:12","slug":"einen-server-daheim-ohne-oeffentliche-ipv4-adresse","status":"publish","type":"page","link":"https:\/\/www.ritter.cc\/?page_id=275","title":{"rendered":"Einen Server daheim ohne \u00f6ffentliche IPv4 Adresse"},"content":{"rendered":"\n<p><strong>Ziel<\/strong><\/p>\n\n\n\n<p>Eigenen Server zu Hause ohne IPv4 Adresse von au\u00dfen \u00fcber einen sicheren Tunnel verf\u00fcgbar machen.<\/p>\n\n\n\n<hr class=\"wp-block-separator\"\/>\n\n\n\n<p><strong>Werkzeuge:<\/strong><\/p>\n\n\n\n<ul class=\"wp-block-list\"><li>Remote Server im Public Internet, z.B. VPS S von ionos f\u00fcr 1 \u20ac\/Monat<\/li><li>Home Server im Home Netz hinter NAT, z.B. Ubuntu (Optional: Esxi)<\/li><li>ssh mit Reverse TCP Port Mapping<\/li><li>ssh Schl\u00fcsselpaar<\/li><li>autossh<\/li><li>crontab<\/li><\/ul>\n\n\n\n<hr class=\"wp-block-separator\"\/>\n\n\n\n<p><strong>Vorgehen<\/strong><\/p>\n\n\n\n<p>Zun\u00e4chst wird ein Schl\u00fcsselpaar generiert, damit die Verbindung zw. Home Server und Remote Server ohne Passwort m\u00f6glich ist.&nbsp;<\/p>\n\n\n\n<p><strong>Auf dem Home Server:<\/strong><\/p>\n\n\n\n<p>ssh-keygen -t rsa -b 4096<\/p>\n\n\n\n<p>Mit dem folgenden Befehl kann gepr\u00fcft werden, ob die Schl\u00fcssel (Private &amp; Public) generiert wurden. Erwartet werden die Eintr\u00e4ge&nbsp;<strong>id_rsa<\/strong>(Private) und&nbsp;<strong>id_rsa.pub<\/strong>&nbsp;(Public)<\/p>\n\n\n\n<p>ls -l .ssh<\/p>\n\n\n\n<p>Anzeigen des Schl\u00fcssels<\/p>\n\n\n\n<p>cat .ssh\/id_rsa.pub<\/p>\n\n\n\n<p><strong>Auf dem Remote Server<\/strong><\/p>\n\n\n\n<p>nano .ssh\/authorized_keys<\/p>\n\n\n\n<p>Der auf dem Home Server generierte Schl\u00fcssel wird auf dem Remote Server unter dieser Datei abgelegt, indem er als neue Zeile hinzugef\u00fcgt wird.<\/p>\n\n\n\n<p>Eingehende Verbindungen auf dem Remote Server sollen drauf gelassen werden. Daf\u00fcr wird&nbsp;<em>sshd_config<\/em>&nbsp;angepasst.<\/p>\n\n\n\n<p>nano \/etc\/ssh\/sshd_config<\/p>\n\n\n\n<p>Am Ende werden die folgenden Befehle hinzugef\u00fcgt.&nbsp;<\/p>\n\n\n\n<p>GatewayPorts yes<\/p>\n\n\n\n<p>ClientAliveInterval 60<\/p>\n\n\n\n<p>ClientAliveCountMax=2<\/p>\n\n\n\n<p>sshd Service wird \u00fcber den folgenden Befehl neugestartet.<\/p>\n\n\n\n<p>service sshd restart<\/p>\n\n\n\n<p><strong>Test des Tunnels<\/strong><\/p>\n\n\n\n<p>Auf dem Server l\u00e4sst man ein Watch Commando laufen.<\/p>\n\n\n\n<p>watch -n 0.5 &#8220;netstat -tulpn&#8221;<\/p>\n\n\n\n<p>Falls auf dem System net-tools fehlen sollten, k\u00f6nnen diese per folgendem Befehl installiert werden.<\/p>\n\n\n\n<p>apt install net-tools<\/p>\n\n\n\n<p>Auf dem Home Server wird der ssh-Tunnel mit dem folgenden Befehl aufgebaut.<\/p>\n\n\n\n<p>ssh -N -R 80:localhost:80 root@server.domain.com<\/p>\n\n\n\n<p>Wenn eine andere Portnummer als 22 verwendet werden soll, kann der folgende Befehl verwendet werden.<\/p>\n\n\n\n<p>ssh -p 39122 -N -R 80:localhost:80 root@server.domain.com<\/p>\n\n\n\n<p>Auf dem Remote Server, wo der \u201e<em>watch<\/em>\u201c Befehl ausgef\u00fchrt wird, sollte jetzt das Portmapping f\u00fcr 80 zu erkennen sein. Damit w\u00e4re der Port 80 auf dem Home Server \u00fcber die IP Adresse des Remote Servers von au\u00dfen erreichbar. Den ssh-Befehl auf dem Home Server kann dann per ctrl+c abgebrochen werden.&nbsp;<\/p>\n\n\n\n<p><strong>Verbindung automatisieren<\/strong><\/p>\n\n\n\n<p>Die Verbindung wird auf dem Home Server per&nbsp;<em>autossh<\/em>&nbsp;automatisiert. Der Befehl sieht wie folgt aus:<\/p>\n\n\n\n<p>autossh -M 0 -f -o ConnectTimeout=10 -o ServerAliveInterval=60 -o ServerAliveCountMax=2 \\ -N -R 80:localhost:80 root@server.domain.com<\/p>\n\n\n\n<p>Falls ein anderer Port als 22 verwendet werden soll, dann gilt der folgende Befehl:<\/p>\n\n\n\n<p>autossh -M 0 -f -o ConnectTimeout=10 -o ServerAliveInterval=60 -o ServerAliveCountMax=2 \\ -p 39122 -N -R 80:localhost:80 root@server.domain.com<\/p>\n\n\n\n<p>Damit die Verbindung vom Home Server zum Remote Server auch nach einem Neustart automatisch aufgebaut wird, wird noch in der&nbsp;<em>crontab<\/em>&nbsp;ein Eintrag hinzugef\u00fcgt.<\/p>\n\n\n\n<p>crontab -e<\/p>\n\n\n\n<p>Der autossh Befehl wird wie folgt in der crontab aufgenommen:<\/p>\n\n\n\n<p>@reboot autossh -M 0 -f -o ConnectTimeout=10 -o ServerAliveInterval=60 -o ServerAliveCountMax=2 -p 39122 -N -R 80:localhost:80 root@server.domain.com<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Ziel Eigenen Server zu Hause ohne IPv4 Adresse von au\u00dfen \u00fcber einen sicheren Tunnel verf\u00fcgbar machen. Werkzeuge: Remote Server im<\/p>\n<p><a href=\"https:\/\/www.ritter.cc\/?page_id=275\" class=\"more-link\">Continue reading<span class=\"screen-reader-text\">Einen Server daheim ohne \u00f6ffentliche IPv4 Adresse<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"parent":187,"menu_order":1,"comment_status":"closed","ping_status":"closed","template":"","meta":{"ngg_post_thumbnail":0,"footnotes":""},"class_list":["post-275","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/www.ritter.cc\/index.php?rest_route=\/wp\/v2\/pages\/275","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.ritter.cc\/index.php?rest_route=\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/www.ritter.cc\/index.php?rest_route=\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/www.ritter.cc\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.ritter.cc\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=275"}],"version-history":[{"count":1,"href":"https:\/\/www.ritter.cc\/index.php?rest_route=\/wp\/v2\/pages\/275\/revisions"}],"predecessor-version":[{"id":277,"href":"https:\/\/www.ritter.cc\/index.php?rest_route=\/wp\/v2\/pages\/275\/revisions\/277"}],"up":[{"embeddable":true,"href":"https:\/\/www.ritter.cc\/index.php?rest_route=\/wp\/v2\/pages\/187"}],"wp:attachment":[{"href":"https:\/\/www.ritter.cc\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=275"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}