reverse-ssh - aus einem anderen Thread

Begonnen von betateilchen, 20 September 2023, 10:01:13

Vorheriges Thema - Nächstes Thema

betateilchen

Aus einem anderen Thread abgespaltet:

Zitat von: FHEM-User22 am 20 September 2023, 09:17:04Hallo betateilchen,

Zitat von: betateilchen am 20 September 2023, 08:57:55Naja, deshalb ja mein Lösungsansatz mit dem reverse-ssh. Alle abgesetzten Installationen verbinden sich zu einer zentralen Stelle (eine Lightsail Instanz bei AWS). "Zufälligerweise" läuft auf der Instanz auch noch der zentrale mosquitto Server quasi als Datendrehscheibe. Kostet 3,50$ im Monat und funktioniert extrem stabil.

Genau so habe ich mir das vorgestellt. Komme nur mit reverse-ssh nicht klar. Hast Du da nen Link mit einem Tutorial oder so? Ehe es hier OT wird, gerne pn oder anderer Thread.
Beste Grüße

Ein Tutorial habe ich auf die Schnelle nicht, ich bin gerade in Urlaub.

Im Prinzip habe ich auf den abgesetzten Systemen einen Dienst, der per systemd gestartet wird und die Verbindung zum zentralen SSH server aufbaut.

[Unit]
Description=Remote SSH Tunnel

ConditionPathExists=|/usr/bin
After=network.target

[Service]
User=udo
ExecStart=/usr/bin/ssh -p 9022 -NTC -o ServerAliveInterval=60 -o ExitOnForwardFailure=yes -o StrictHostKeyChecking=no -R 9094:localhost:9022 udo@mqtt.j65.de

# Restart every >2 seconds to avoid StartLimitInterval failure
RestartSec=3
Restart=always

[Install]
WantedBy=multi-user.target


Die entscheidende Zeile steckt hier:

ExecStart=/usr/bin/ssh -p 9022 -NTC -o ServerAliveInterval=60 -o ExitOnForwardFailure=yes -o StrictHostKeyChecking=no -R 9094:localhost:9022 <user>@<ssh.server.de>
port 9022 ist der port, auf dem der SSH Server auf der "Zentrale" hört.

port 9094 ist der port, auf dem die abgesetzte Installation von der "Zentrale" aus erreichbar ist.

<ssh.server.de> ist die Adresse des zentralen SSH server, <user> ist der User, mit dem sich die abgesetzte Stelle dort anmeldet.

Die gesamte Authentifizierung basiert auf Zertifikaten ohne Passwörter. Dazu gibt es jede Menge Tutorials im Internet.

Zur Einrichtung ist es hilfreich, die Befehlszeile mit dem Verbindungsaufbau von Hand an der Konsole zu benutzen, um ggf. Fehlermeldungen oder andere Abfragen erkennen zu können.

Ist der Tunnel erstmal aufgebaut, kann von der "Zentrale" aus die Außenstelle einfach mit

ssh -p 9094 localhost
erreicht werden, vorausgesetzt, der user auf der Zentrale ist der gleiche user wie auf der Außenstelle. Das 'localhost' ist an dieser Stelle wirklich so gemeint.
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

betateilchen

Der port 9094 ist der einzige variable Parameter in der Konfiguration.

Jede Außenstelle benutzt einen eigenen port für den eigenen Tunnel.
Bei mir sind die einfach ab 9091 fortlaufend numeriert.
Auf der Zentrale gibt es ein .bash_aliases

udo@mqtt:~$ cat .bash_aliases
alias carport='clear && ssh -p 9091 localhost'
alias <ort1>='clear && ssh -p 9092 localhost'
alias <ort2>='clear && ssh -p 9093 localhost'
alias <ort3>='clear && ssh -p 9094 localhost'
... usw.

und ich kann dann einfach mit z.B. 'carport' eine Verbindung zur Außenstelle herstellen.
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

Wernieman

Ansonsten währe noch das Stichwort "autossh"
- Bitte um Input für Output
- When there is a Shell, there is a Way
- Wann war Dein letztes Backup?

Wie man Fragen stellt: https://tty1.net/smart-questions_de.html

betateilchen

#3

autossh ist recht und schön, aber man sollte in solchen Themen auch verstehen, warum etwas wie funktioniert und sich nicht immer darauf verlassen, dass "andere" alles richtig machen, nur weil sie es automatisieren.
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

betateilchen

Zitat von: betateilchen am 20 September 2023, 10:01:13Ein Tutorial habe ich auf die Schnelle nicht, ich bin gerade in Urlaub.

Das hier scheint mir recht gut beschrieben zu sein:

http://www.thirdway.ch/En/projects/raspberry_pi_3g/index.php
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

Wernieman

Sorry ich bin sehr Kreative in Rechtschreibung .. und da die Deutsche nicht mal logisch oder Wissenschaftlich begründbar ist (Ein Wortstamm wird verschieden geschrieben), fällt eben nicht allen Leuten so etwas auf ...
- Bitte um Input für Output
- When there is a Shell, there is a Way
- Wann war Dein letztes Backup?

Wie man Fragen stellt: https://tty1.net/smart-questions_de.html

FHEM-User22

Dankeschön Euch allen.

Da habe ich das Wochenende Zeit, es mir reinzuziehen.


Beste Grüße
FHEM auf Raspberry Pi und Proxmox und... und.... und....