Skip to content
  • Home
  • Aktuell
  • Tags
  • 0 Ungelesen 0
  • Kategorien
  • Unreplied
  • Beliebt
  • GitHub
  • Docu
  • Hilfe
Skins
  • Light
  • Brite
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dark
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • Standard: (Kein Skin)
  • Kein Skin
Einklappen
ioBroker Logo

Community Forum

donate donate
  1. ioBroker Community Home
  2. Deutsch
  3. Off Topic
  4. SSH server + Tunnel

NEWS

  • Weihnachtsangebot 2025! 🎄
    BluefoxB
    Bluefox
    22
    1
    1.0k

  • UPDATE 31.10.: Amazon Alexa - ioBroker Skill läuft aus ?
    apollon77A
    apollon77
    48
    3
    9.1k

  • Monatsrückblick – September 2025
    BluefoxB
    Bluefox
    14
    1
    2.4k

SSH server + Tunnel

Geplant Angeheftet Gesperrt Verschoben Off Topic
3 Beiträge 2 Kommentatoren 554 Aufrufe 2 Watching
  • Älteste zuerst
  • Neuste zuerst
  • Meiste Stimmen
Antworten
  • In einem neuen Thema antworten
Anmelden zum Antworten
Dieses Thema wurde gelöscht. Nur Nutzer mit entsprechenden Rechten können es sehen.
  • I Offline
    I Offline
    ignis-draco
    schrieb am zuletzt editiert von ignis-draco
    #1

    SSH Tunnel aufbauen

    Vorwort:

    Was ist das ziel?

    Beliebige Rechner bzw. Ports im eigenden Netzwerk durch einen sicheren Tunnel erreichen.

    Was wird benötigt?:

    • Router mit Internet verbindung
    • Linux Recher (egal ob VM oder Raspberry)
    • Rechner mit Terminal (ich verwede auch dort ein Linux Rechner)
      optional:
    • account bei einem Dyndns Anbieter.

    Nebensatz:

    Alle Befehle beziehen sich auf eine Debian basierte Linux Versione (z.b. Ubuntu/RaspberryOS usw.)

    Server einrichten und härten

    Auf dem Server:

    1. Benutzer einrichten
      Man sollte keinen Standard Benutzer (z.b. pi,admin,oracle,postgres,user,www,web,minerstat,) verwenden.
      Einen neuen Benutzer kann anlegen:
    sudo adduser <User>
    
    1. ssh Server Installieren
    sudo apt install openssh-server
    

    Konfigurieren

    Server config Datei editieren mit z.b.:

    sudo nano /etc/ssh/sshd_config
    
    Nr. Zeile von zu
    a 13 Port 22 Port XXXX
    b 19 HostKey /etc/ssh/ssh_host_ecdsa_key #HostKey /etc/ssh/ssh_host_ecdsa_key
    c 32 PermitRootLogin [no/yes] PermitRootLogin no
    d 37 PubkeyAuthentication yes PubkeyAuthentication yes
    e END AllowUsers <BenuterzerName>
    f END Ciphers chacha20-poly1305@openssh.com,aes256-gcm@openssh.com,aes128-gcm@openssh.com,aes256-ctr,aes128-ctr

    Begründung

    a. Der Port 22 wird sehr viel Angefragt ist es besser einen Port >1000 zu wählen
    b. ecdsa ist kein sichere host key mehr.
    c. Prüfen ob da "no" steht da sonst ein login durch den Benutzer root möglich ist. [Es sollte eigentlich immer "no" stehen]
    d. Prüfen ob da "yes" steht damit der Login mit Keys funktioniert.
    e. Es wird nur einem Benutzer erlaubt sich einzuloggen
    f. Unsicher Verschlüsselungen deaktivieren und Chacha20 die höchste Priorität geben.

    Keys erneuern und server starten

    Des weiteren sollten die alten ssh Host keys gelöscht werden damit sie neu erzeugt werden.

    sudo rm /etc/ssh/ssh_host_ecdsa_key* 
    sudo rm /etc/ssh/ssh_host_ed25519*
    sudo rm /etc/ssh/ssh_host_rsa_key*
    

    und der autostart des SSH server aktiviert werden.

    sudo systemctl enable sshd.service
    

    Zum schluss wäre es noch sinnvoll einmal den Rechner neuzustarten. So kann man sicherstellen das auch nach z.b. einem Stromausfall alles normal laufen sollte.

    Verbindungs test

    Von einem Client bauen wir jetzt testweise eine Verbindung auf.

    ssh <User>@<IP> -p <Port>
    

    <User> = Benutzername z.b. den neu angelegten
    <IP>= IP Adresse des servers
    <PORT>= den SSH port der in die config Datei eingetragen wurde
    Nach Eingabe des Passwort sollte man sich auf dem Server befinden.

    Optional aber sehr sinnvoll wäre es auch noch Fail2Ban zu installatiern und einzurichten damit brute force Angriffe unterbinden werden.

    Client Konfigurieren

    Nach dem die grundsätzlich Verbindung funktioniert benötigen wir jetzt noch etwas sicheres als ein Password.
    Zu erste wird ein SSH-Key auf dem Client erzeugt.

    ssh-keygen -t ed25519 -f ~/.ssh/HomeKey
    

    Dieser wird dann auf den Server kopiert.

    ssh-copy-id -i ~/.ssh/HoemKey <User>@<IP> -p <Port>
    

    jetzt kann überprüft werden ob die Verbindung mit dem Key klappt.

    ssh -i ~/.ssh/HomeKey <User>@<IP> -p <Port>
    

    Nach eingabe des Passwort das bei der Key Erstellung gesetzt wurde sollte man auch wieder die Verbindung zum Server haben.

    Abschluss

    Wenn bis hier alles geht solte man noch den Login mit Passwort im Server deaktivieren.
    Also auf dem Server wieder
    sudo nano /etc/ssh/sshd_config

    Zeile von zu
    56 PasswordAuthentication yes PasswordAuthentication no

    Port öffnen und Dyndns einrichten

    Dieser Part ist leider sehr umfangreich da es unter anderem abhängig davon ist was für einen Router und Internetdienstanbieter man hat.

    Daher fasse ich mich nur algemein.

    1. Man sollte sicherstellen das der Server immer die gleiche IP bekommt. Also entwerder eine Statische einrichten oder
      den DHCP (meist im Router) so einrichten das er immer die gleiche vergiebt.
    2. Den Port der im ssh Server eingetragen wurde von außen auf den Rechner weiter leiten
    3. Da bei den meisten Anschlüssen die öffentlich Ip nicht fest ist wird ein Dyndns anbieter benötigt so dann man einen Namen hat unter dem man immer die Aktuelle IP nach schlagen kann. Je nach Anbieter müssen dafür unterschiedliche Sachen konfiguriert werden.

    Aufbau eines Tunnels

    Der einfachste Weg einen ssh Tunnel zu erzeugen ist auf dem Client die Datei
    .ssh/config
    anzulegen und dort

    Host ioBroker
            HostName <DynDNS Name>
            User <User>
            Port <Port>
            IdentityFile ~/.ssh/HoemKey
            LocalForward 8080 <IP>:8081
    

    <DynDNS Name> = DynDNS Name oder öffentliche IP adresse
    <IP>= IP adresse des servers (z.b. IOBroker)
    8081= Port bei dem entfernten Rechner (Ziel)
    8080= Lokaler Port kann fast beliebig sein
    <PORT>= den SSH port der in die config Datei eingetragen wurde

    Nach dem Speichern müssen noch die Rechte richtig gestezt werden

    chmod 600 ~/.ssh/config
    

    Jetzt kann einfach durch ein

    ssh -N ioBroker
    

    der Tunnel gestarte werden (Key Passwort). Bei dem Client kann man jetzt im Webbowser

    http://127.0.0.1:8080
    der Tunnel genutzt werden um z.b. auf das Admin interface im Iobroker zu kommen.

    Nachwort

    Die ssh config Datei ist sehr mächtig begriffe zum Googlen wäre z.b. "ssh config jumphost", "ssh config multiplexing"

    Wartung:

    Der Server sollte immer aktuell gehalten werden und man sollte daran denken das wenn man ihn dauerhaft ausschalte auch den offenen Port im Router wieder entfernt.

    Zwischen durch sollte man sich mit

    sudo journalctl -b -u ssh
    

    Die Logs vom ssh server anschauen ob da was komisches drin passiert.

    Windows Clients

    Auch für Windows gibt es möglichkeiten den ssh Tunnel zu benutzen. Ich persönlich verwende meinstens das "Windows-Subsystem für Linux" (WSL) oder MobaXterm für ssh und ssh Tunnels.

    Ich hoffe ich konnte damit etwas weiter helfen und würde mich über etwas feedback freuen.

    Proxmox [DMAF5] = LXC [Debian 12]
    ioBroker – apt-cacher – Semaphore – NGINX Proxy Manager – gitolite – LMS – tandoor – DokuWiki - paperless-ngx - unifi - mumble - wireguard - heimdall - planka - rustDesk - adguard

    FredFF 1 Antwort Letzte Antwort
    0
    • I ignis-draco

      SSH Tunnel aufbauen

      Vorwort:

      Was ist das ziel?

      Beliebige Rechner bzw. Ports im eigenden Netzwerk durch einen sicheren Tunnel erreichen.

      Was wird benötigt?:

      • Router mit Internet verbindung
      • Linux Recher (egal ob VM oder Raspberry)
      • Rechner mit Terminal (ich verwede auch dort ein Linux Rechner)
        optional:
      • account bei einem Dyndns Anbieter.

      Nebensatz:

      Alle Befehle beziehen sich auf eine Debian basierte Linux Versione (z.b. Ubuntu/RaspberryOS usw.)

      Server einrichten und härten

      Auf dem Server:

      1. Benutzer einrichten
        Man sollte keinen Standard Benutzer (z.b. pi,admin,oracle,postgres,user,www,web,minerstat,) verwenden.
        Einen neuen Benutzer kann anlegen:
      sudo adduser <User>
      
      1. ssh Server Installieren
      sudo apt install openssh-server
      

      Konfigurieren

      Server config Datei editieren mit z.b.:

      sudo nano /etc/ssh/sshd_config
      
      Nr. Zeile von zu
      a 13 Port 22 Port XXXX
      b 19 HostKey /etc/ssh/ssh_host_ecdsa_key #HostKey /etc/ssh/ssh_host_ecdsa_key
      c 32 PermitRootLogin [no/yes] PermitRootLogin no
      d 37 PubkeyAuthentication yes PubkeyAuthentication yes
      e END AllowUsers <BenuterzerName>
      f END Ciphers chacha20-poly1305@openssh.com,aes256-gcm@openssh.com,aes128-gcm@openssh.com,aes256-ctr,aes128-ctr

      Begründung

      a. Der Port 22 wird sehr viel Angefragt ist es besser einen Port >1000 zu wählen
      b. ecdsa ist kein sichere host key mehr.
      c. Prüfen ob da "no" steht da sonst ein login durch den Benutzer root möglich ist. [Es sollte eigentlich immer "no" stehen]
      d. Prüfen ob da "yes" steht damit der Login mit Keys funktioniert.
      e. Es wird nur einem Benutzer erlaubt sich einzuloggen
      f. Unsicher Verschlüsselungen deaktivieren und Chacha20 die höchste Priorität geben.

      Keys erneuern und server starten

      Des weiteren sollten die alten ssh Host keys gelöscht werden damit sie neu erzeugt werden.

      sudo rm /etc/ssh/ssh_host_ecdsa_key* 
      sudo rm /etc/ssh/ssh_host_ed25519*
      sudo rm /etc/ssh/ssh_host_rsa_key*
      

      und der autostart des SSH server aktiviert werden.

      sudo systemctl enable sshd.service
      

      Zum schluss wäre es noch sinnvoll einmal den Rechner neuzustarten. So kann man sicherstellen das auch nach z.b. einem Stromausfall alles normal laufen sollte.

      Verbindungs test

      Von einem Client bauen wir jetzt testweise eine Verbindung auf.

      ssh <User>@<IP> -p <Port>
      

      <User> = Benutzername z.b. den neu angelegten
      <IP>= IP Adresse des servers
      <PORT>= den SSH port der in die config Datei eingetragen wurde
      Nach Eingabe des Passwort sollte man sich auf dem Server befinden.

      Optional aber sehr sinnvoll wäre es auch noch Fail2Ban zu installatiern und einzurichten damit brute force Angriffe unterbinden werden.

      Client Konfigurieren

      Nach dem die grundsätzlich Verbindung funktioniert benötigen wir jetzt noch etwas sicheres als ein Password.
      Zu erste wird ein SSH-Key auf dem Client erzeugt.

      ssh-keygen -t ed25519 -f ~/.ssh/HomeKey
      

      Dieser wird dann auf den Server kopiert.

      ssh-copy-id -i ~/.ssh/HoemKey <User>@<IP> -p <Port>
      

      jetzt kann überprüft werden ob die Verbindung mit dem Key klappt.

      ssh -i ~/.ssh/HomeKey <User>@<IP> -p <Port>
      

      Nach eingabe des Passwort das bei der Key Erstellung gesetzt wurde sollte man auch wieder die Verbindung zum Server haben.

      Abschluss

      Wenn bis hier alles geht solte man noch den Login mit Passwort im Server deaktivieren.
      Also auf dem Server wieder
      sudo nano /etc/ssh/sshd_config

      Zeile von zu
      56 PasswordAuthentication yes PasswordAuthentication no

      Port öffnen und Dyndns einrichten

      Dieser Part ist leider sehr umfangreich da es unter anderem abhängig davon ist was für einen Router und Internetdienstanbieter man hat.

      Daher fasse ich mich nur algemein.

      1. Man sollte sicherstellen das der Server immer die gleiche IP bekommt. Also entwerder eine Statische einrichten oder
        den DHCP (meist im Router) so einrichten das er immer die gleiche vergiebt.
      2. Den Port der im ssh Server eingetragen wurde von außen auf den Rechner weiter leiten
      3. Da bei den meisten Anschlüssen die öffentlich Ip nicht fest ist wird ein Dyndns anbieter benötigt so dann man einen Namen hat unter dem man immer die Aktuelle IP nach schlagen kann. Je nach Anbieter müssen dafür unterschiedliche Sachen konfiguriert werden.

      Aufbau eines Tunnels

      Der einfachste Weg einen ssh Tunnel zu erzeugen ist auf dem Client die Datei
      .ssh/config
      anzulegen und dort

      Host ioBroker
              HostName <DynDNS Name>
              User <User>
              Port <Port>
              IdentityFile ~/.ssh/HoemKey
              LocalForward 8080 <IP>:8081
      

      <DynDNS Name> = DynDNS Name oder öffentliche IP adresse
      <IP>= IP adresse des servers (z.b. IOBroker)
      8081= Port bei dem entfernten Rechner (Ziel)
      8080= Lokaler Port kann fast beliebig sein
      <PORT>= den SSH port der in die config Datei eingetragen wurde

      Nach dem Speichern müssen noch die Rechte richtig gestezt werden

      chmod 600 ~/.ssh/config
      

      Jetzt kann einfach durch ein

      ssh -N ioBroker
      

      der Tunnel gestarte werden (Key Passwort). Bei dem Client kann man jetzt im Webbowser

      http://127.0.0.1:8080
      der Tunnel genutzt werden um z.b. auf das Admin interface im Iobroker zu kommen.

      Nachwort

      Die ssh config Datei ist sehr mächtig begriffe zum Googlen wäre z.b. "ssh config jumphost", "ssh config multiplexing"

      Wartung:

      Der Server sollte immer aktuell gehalten werden und man sollte daran denken das wenn man ihn dauerhaft ausschalte auch den offenen Port im Router wieder entfernt.

      Zwischen durch sollte man sich mit

      sudo journalctl -b -u ssh
      

      Die Logs vom ssh server anschauen ob da was komisches drin passiert.

      Windows Clients

      Auch für Windows gibt es möglichkeiten den ssh Tunnel zu benutzen. Ich persönlich verwende meinstens das "Windows-Subsystem für Linux" (WSL) oder MobaXterm für ssh und ssh Tunnels.

      Ich hoffe ich konnte damit etwas weiter helfen und würde mich über etwas feedback freuen.

      FredFF Offline
      FredFF Offline
      FredF
      Most Active Forum Testing
      schrieb am zuletzt editiert von
      #2

      @ignis-draco sagte in SSH server + Tunnel:
      Danke für diese Anleitung, werde ich wenn es die Zeit zulässt sicherlich mal probieren.
      Ist das nicht widersprüchlich:

      c 32 PermitRootLogin no PermitRootLogin no

      zu

      c. Prüfen ob da "no" steht da sonst ein login durch den Benutzer root möglich ist

      1 Antwort Letzte Antwort
      0
      • I Offline
        I Offline
        ignis-draco
        schrieb am zuletzt editiert von ignis-draco
        #3

        @FredF

        Ja stimmt ich habe es hoffentlich jetzt deutlicher gemacht. Es sollte halt schon standard sein bei einem aktuelle Linux. Ich habe es mir nur halt angewöhnt es immer einmal zu Überprüfen.

        Proxmox [DMAF5] = LXC [Debian 12]
        ioBroker – apt-cacher – Semaphore – NGINX Proxy Manager – gitolite – LMS – tandoor – DokuWiki - paperless-ngx - unifi - mumble - wireguard - heimdall - planka - rustDesk - adguard

        1 Antwort Letzte Antwort
        0
        Antworten
        • In einem neuen Thema antworten
        Anmelden zum Antworten
        • Älteste zuerst
        • Neuste zuerst
        • Meiste Stimmen


        Support us

        ioBroker
        Community Adapters
        Donate

        486

        Online

        32.5k

        Benutzer

        81.6k

        Themen

        1.3m

        Beiträge
        Community
        Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen | Einwilligungseinstellungen
        ioBroker Community 2014-2025
        logo
        • Anmelden

        • Du hast noch kein Konto? Registrieren

        • Anmelden oder registrieren, um zu suchen
        • Erster Beitrag
          Letzter Beitrag
        0
        • Home
        • Aktuell
        • Tags
        • Ungelesen 0
        • Kategorien
        • Unreplied
        • Beliebt
        • GitHub
        • Docu
        • Hilfe