Befehl autossh beim Synology-Start

Status
Für weitere Antworten geschlossen.

skyflyer8

Benutzer
Registriert
29. Aug. 2019
Beiträge
5
Reaktionspunkte
0
Punkte
1
Folgende Problematik:
Aufgrund von DSlite-Problematik möchte ich von der Diskstation eine Tunnelverbindung zu meinem Remote-Server über ssh aufbauen, damit ich von unterwegs auf meine Diskstation zugreifen kann. Für die, die es interessiert, die Vorgehensweise ist hier beschrieben: Link.

Klappt auch hervorragend über die Commandozeile mit dem Befehl:
"autossh -M 0 -f -o ConnectTimeout=10 -o ServerAliveInterval=60 -o ServerAliveCountMax=2 -N -R 5001:192.168.0.206:5001 root@meineServerAdresse".

Die Frage ist, wie kann man den obigen autossh-Befehl beim Start von Diskstation ausführen?
Was ist versucht habe, ist die Datei namens "autossh.sh" anzulegen, wo ich den obigen Befehl gespeichert habe.
Als nächstes ein benutzdefiniertes Script erstellt mit dem folgenden Inhalt:
"bash /volume1/homes/benutzer/autossh.sh".
Beim Ausführen des Scripts passiert aber nichts.

Auch das Hinzufügen des obigen Befehls (mit dem vorangestellten @reboot) in die crontab-Datei hat nichts gebracht.

Weiß jemand, woran es liegt? Danke
 
Führst du den Befehl in der Konsole ohne root rechte aus?
 
Kann man das nicht wie bei jedem Linux-basierten System durch einen systemd Service lösen? So habe ich das zumindest auf meinen RasPis gemacht, wenn ich bestimmte Dienste (z.B. MC-Server) automatisch beim Anschalten starten wollte, da die Pis ja headless betrieben werden.
Etwa so würde ich mir das vorstellen:

$ sudo nano /etc/systemd/system/autossh.service

[Unit]
Description=autossh
After=network.target
[Service]
autossh -M 0 -f -o ConnectTimeout=10 -o ServerAliveInterval=60 -o ServerAliveCountMax=2 -N -R 5001:192.168.0.206:5001 root@meineServerAdresse"
[Install]
WantedBy=multi-user.target


$ sudo systemctl enable autossh.service
 
Zuletzt bearbeitet:
Danke, hat aber leider auch nicht geklappt. Der Tunnel wird nicht aufgebaut.

Ich muss dazu sagen, ich bin absolut kein Linux-Experte und tappe jetzt total im Dunkeln, warum der Befehl in der Commandozeile funktioniert und sonst nicht :unsure:.
 
Zuletzt bearbeitet von einem Moderator:
Hast du mal probiert im Aufgabenplaner folgende Zeile(n)?

/volume1/homes/benutzer/autossh.sh
oder falls die Datei nicht ausführbar ist mit
sh /volume1/homes/benutzer/autossh.sh
 
Welche DSM Version hast du?
 
Oder mal den gesamten Befehl direkt und kein script referenzieren.

Oder sich mal /bin/env mit ausgeben lassen bzw. das script selbst loggen.
Vielleicht fehlt dann nur der Pfad ala /bin/autossh oder ähnlich.
Sprich was in /root/.Profile oder /root/.bashrc so alles läuft wenn du dich auf der Konsole anmeldest, aber nicht unbedingt, wenn das ganze per Aufgabenplaner aufgerufen wird.
 
Falls du noch weiter auf der Suche nache einer Lösung bist ich habe das gleiche Problem über den Task Scheduler gelöst, wo ich ein "User defined Script" beim Start ausführen lasse. Mein Script sieht wie folgt aus:

#!/bin/bash export LD_PRELOAD=/usr/lib/openhook.so:/usr/lib/libapparmor.so.1 AUTOSSH=/opt/bin/autossh echo "Starting script in 60 seconds" sleep 60 $AUTOSSH -M 0 -o "ServerAliveInterval 30" -o "ServerAliveCountMax 3" -f -N -R 80:SYNOLOGY_IP:80 root@EXTERNE_IP echo "Port 80 mapped" $AUTOSSH -M 0 -o "ServerAliveInterval 30" -o "ServerAliveCountMax 3" -f -N -R 443:SYNOLOGY_IP:443 root@EXTERNE_IP echo "Port 443 mapped" echo "AutoSSH Script has run successfully"

Ich lasse das Script erst einmal 60 Sekunden warten, da es oft zu fehlern kam wenn es direkt gelaufen ist. So läuft es bei mir seit ca. 2 Jahren stabil.
 
Für so ein Script wäre Code statt ICode sinnvoller.
Code:
#!/bin/bash

export LD_PRELOAD=/usr/lib/openhook.so:/usr/lib/libapparmor.so.1

AUTOSSH=/opt/bin/autossh

echo "Starting script in 60 seconds"
sleep 60

$AUTOSSH -M 0 -o "ServerAliveInterval 30" -o "ServerAliveCountMax 3" -f -N -R 80:SYNOLOGY_IP:80 root@EXTERNE_IP
echo "Port 80 mapped"
$AUTOSSH -M 0 -o "ServerAliveInterval 30" -o "ServerAliveCountMax 3" -f -N -R 443:SYNOLOGY_IP:443 root@EXTERNE_IP
echo "Port 443 mapped"
echo "AutoSSH Script has run successfully"
 
Noch sinnvoller wäre es, dabei noch Code Highlighting zu verwenden. ;)

Bash:
#!/bin/bash

export LD_PRELOAD=/usr/lib/openhook.so:/usr/lib/libapparmor.so.1

AUTOSSH=/opt/bin/autossh

echo "Starting script in 60 seconds"
sleep 60

$AUTOSSH -M 0 -o "ServerAliveInterval 30" -o "ServerAliveCountMax 3" -f -N -R 80:SYNOLOGY_IP:80 root@EXTERNE_IP
echo "Port 80 mapped"
$AUTOSSH -M 0 -o "ServerAliveInterval 30" -o "ServerAliveCountMax 3" -f -N -R 443:SYNOLOGY_IP:443 root@EXTERNE_IP
echo "Port 443 mapped"
echo "AutoSSH Script has run successfully"
 
Status
Für weitere Antworten geschlossen.
 

Kaffeautomat

Wenn du das Forum hilfreich findest oder uns unterstützen möchtest, dann gib uns doch einfach einen Kaffee aus.

Als Dankeschön schalten wir deinen Account werbefrei.

:coffee:

Hier gehts zum Kaffeeautomat