
SSH-Verbindungsdaemon für Debian/Raspbian/Ubuntu/usw.
sidedoor verwaltet eine SSH-Verbindung oder einen Tunnel mit einem Shell-Skript-Daemon.
Der primäre Anwendungsfall ist die Aufrechterhaltung einer Remote-Port-Weiterleitung zum lokalen SSH-Server (oder einem anderen Port). Somit kann das lokale Gerät ohne eingehende Verbindungen erreicht werden, die durch eine NAT oder Firewall blockiert oder auf mobilen Geräten anderweitig unpraktisch sein könnten.
SSH-Clients können über den Reverse-SSH-Proxy, den sidedoor tunnelt, auf das Gerät zugreifen. Dieser Proxy-Server kann nicht vertrauenswürdig sein und von einem Dritten oder Cloud-Dienst betrieben werden.
sidedoor aktiviert SSH-Keepalives und wiederholt SSH mit exponentiellem Backoff. Um sich so schnell wie möglich wieder zu verbinden, wird der Backoff zurückgesetzt, wenn eine Netzwerkschnittstelle aktiviert (oder geändert) wird.
Weitere Anwendungsfälle:
Benutzt du sidedoor? Fehlerberichte, Funktionswünsche – bitte ein Issue eröffnen! Pull-Requests sind willkommen.
sidedoor ist für Debian und Debian-basierte Systeme wie Raspbian, Ubuntu und VyOS/EdgeOS paketiert, sollte aber in jeder POSIX-Umgebung mit einem (OpenSSH-)SSH-Client funktionieren.
Wenn sidedoor in den Repositories deiner Distribution verfügbar ist (Debian 9+, Ubuntu 17.04+), installiere es einfach mit deinem Paketmanager.
sudo apt install sidedoor
Andernfalls kannst du die debs manuell von der Releases-Seite herunterladen.
Um dem sidedoor-Benutzer vollen Root-Zugriff zu gewähren,
installiere das Paket sidedoor-sudo.
Der entfernte Server und die Port-Weiterleitungen werden in /etc/default/sidedoor konfiguriert.
SSH-Konfigurationsdateien befinden sich im Verzeichnis /etc/sidedoor.
Konfiguriere REMOTE_SERVER und OPTIONS in /etc/default/sidedoor.
Für einige Argumente, die in OPTIONS übergeben werden können, siehe den Blog-Beitrag
Lokale und Remote-Port-Weiterleitung anhand von Beispielen erklärt
und die ssh-Manpage.
Bearbeite die SSH-Konfigurationsdateien unter /etc/sidedoor.
id_rsa: Privater SSH-Schlüssel für den Zugriff auf den entfernten Server.
Du kannst ssh-keygen verwenden, um diesen Schlüssel zu erstellen
(drücke y, wenn du aufgefordert wirst, die vorhandene Datei zu überschreiben):
sudo ssh-keygen -t rsa -N '' -f /etc/sidedoor/id_rsa
Der entsprechende öffentliche Schlüssel id_rsa.pub muss in die
Datei ~/.ssh/authorized_keys des entfernten Benutzers aufgenommen werden.
/etc/ssh/sshd_config bearbeitest.
ChallengeResponseAuthentication no und PasswordAuthentication no).ListenAddress ::1 und ListenAddress 127.0.0.1).sshd neu, z. B.
sudo service ssh reload.ssh_client_config_example und binde sie in die
~/.ssh/config-Datei eines Clients ein, um einfach auf den getunnelten SSH-Server
mit ssh, scp, rsync usw. zuzugreifen.sidedoor ist als eine leichte Lösung zum Tunneln von Ports mit minimalen Abhängigkeiten gedacht, es gibt jedoch einige Alternativen mit mehr Funktionen.
Tor bietet Anonymität für Server, die als versteckte Dienste betrieben werden, bewältigt aber auch NAT-Traversal.
Vorteile:
Nachteile:
Installiere Tor sowohl auf dem Gerät als auch auf den Clients.
sudo apt install tor
Auf dem Gerät, das freigegeben wird, bearbeite /etc/tor/torrc,
um einen versteckten Dienst auf Port 22 zu erstellen.
HiddenServiceDir /var/lib/tor/sshd/
HiddenServicePort 22 127.0.0.1:22
HiddenServiceAuthorizeClient stealth client
Ersetze "client" durch eine kommagetrennte Liste von Client-Namen, um mehrere Autorisierungsgeheimnisse zu generieren.
Lade dann Tor neu und hole den Onion-Hostnamen und die Autorisierungsdaten.
sudo service tor reload
sudo cat /var/lib/tor/sshd/hostname
Auf den Clients bearbeite /etc/tor/torrc,
um den Onion-Hostnamen und die Autorisierungsdaten aus der Datei hostname hinzuzufügen.
HidServAuth <hostname>.onion <secret>
Lade dann Tor neu und führe torsocks ssh <hostname>.onion aus oder setze ProxyCommand
in der Datei ~/.ssh/config.
ProxyCommand torsocks nc <hostname>.onion 22
autossh startet, ähnlich wie sidedoor,
ssh und startet es bei Bedarf neu.
Einige Unterschiede:
sidedoor ist ein minimalistischer Shell-Skript-Daemon. autossh ist ein umfangreicheres und konfigurierbares C-Programm.
sidedoor aktiviert SSH-Keepalives
(ServerAliveInterval und ServerAliveCountMax),
die in modernen Versionen von OpenSSH verfügbar sind.
autossh überwacht ssh, indem es Daten durch
eine Schleife von Port-Weiterleitungen sendet (diese Funktion stammt aus der Zeit vor SSH-Keepalives),
dies kann jedoch mit der Option -M 0 deaktiviert werden.
sidedoor soll automatisch als Dienst laufen, daher enthält das Paket init/systemd-Skripte und Konfigurationsdateien. autossh enthält kein init/systemd-Skript (Debian-Bug #698390).
sidedoor deaktiviert entfernte Befehle und Pseudo-TTY-Zuweisung. Für die interaktive Nutzung solltest du autossh mit SSH-Keepalives oder Mosh in Betracht ziehen.
sidedoor wiederholt die Verbindung immer, wenn ssh mit einem Exit-Code ungleich Null beendet wird.
autossh wiederholt die Verbindung nicht, wenn ssh beim ersten Versuch zu schnell beendet wird,
was passieren kann, wenn die Netzwerkkonnektivität oder DNS-Auflösung
unterbrochen ist, insbesondere auf mobilen Geräten.
Sowohl sidedoor als auch autossh haben Backoff-Logik für Wiederholungen.
sidedoor setzt den Backoff für Wiederholungen zurück, wenn eine Netzwerkschnittstelle aktiviert wird,
um so schnell wie möglich eine erneute Verbindung herzustellen, indem es SIGUSR1
von einem if-up.d-Skript empfängt. autossh hat keine Netzwerkstatus-Hooks.
Copyright 2015-2017 Dara Adib.
Dieses Programm ist freie Software: Sie können es unter den Bedingungen der GNU General Public License, wie von der Free Software Foundation veröffentlicht, entweder Version 3 der Lizenz oder (nach Ihrer Wahl) jeder späteren Version weiterverbreiten und/oder modifizieren.
Dieses Programm wird in der Hoffnung verbreitet, dass es nützlich sein wird, aber OHNE JEDE GEWÄHRLEISTUNG; ohne die stillschweigende Gewährleistung der MARKTGÄNGIGKEIT oder EIGNUNG FÜR EINEN BESTIMMTEN ZWECK. Siehe die GNU General Public License für weitere Details.
Sie sollten zusammen mit diesem Programm eine Kopie der GNU General Public License erhalten haben. Falls nicht, siehe https://www.gnu.org/licenses/.
known_hosts: SSH-Host-Schlüssel des entfernten Servers.
Optional kannst du den entfernten Zugriff auf den lokalen sidedoor-Benutzer gewähren, indem du
SSH-öffentliche Schlüssel zur Datei /etc/sidedoor/authorized_keys hinzufügst.
/etc/sidedoor/authorized_keys ist ein Symlink zu
~sidedoor/.ssh/authorized_keys.
Das Paket sidedoor-sudo (falls installiert) gewährt diesem Benutzer vollen Root-Zugriff.
Starte den sidedoor-Dienst neu, um die Änderungen zu übernehmen.
sudo service sidedoor restart