Befehl autossh beim Synology-Start

skyflyer8

Benutzer
Mitglied seit
29. Aug 2019
Beiträge
5
Punkte für Reaktionen
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
 

ctrlaltdelete

Benutzer
Sehr erfahren
Maintainer
Mitglied seit
30. Dez 2012
Beiträge
10.094
Punkte für Reaktionen
3.637
Punkte
414
Führst du den Befehl in der Konsole ohne root rechte aus?
 

Stationary

Benutzer
Sehr erfahren
Mitglied seit
13. Feb 2017
Beiträge
3.605
Punkte für Reaktionen
1.036
Punkte
194
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:

skyflyer8

Benutzer
Mitglied seit
29. Aug 2019
Beiträge
5
Punkte für Reaktionen
0
Punkte
1
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:

Fusion

Benutzer
Sehr erfahren
Mitglied seit
06. Apr 2013
Beiträge
14.137
Punkte für Reaktionen
898
Punkte
424
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
 

ctrlaltdelete

Benutzer
Sehr erfahren
Maintainer
Mitglied seit
30. Dez 2012
Beiträge
10.094
Punkte für Reaktionen
3.637
Punkte
414
Welche DSM Version hast du?
 

Fusion

Benutzer
Sehr erfahren
Mitglied seit
06. Apr 2013
Beiträge
14.137
Punkte für Reaktionen
898
Punkte
424
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.
 

Dawid

Benutzer
Mitglied seit
29. Aug 2022
Beiträge
1
Punkte für Reaktionen
0
Punkte
1
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.
 

synfor

Benutzer
Sehr erfahren
Mitglied seit
22. Dez 2017
Beiträge
8.584
Punkte für Reaktionen
1.433
Punkte
288
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"
 

Tommes

Benutzer
Sehr erfahren
Maintainer
Mitglied seit
26. Okt 2009
Beiträge
9.145
Punkte für Reaktionen
1.113
Punkte
314
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"
 


 

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