SSH Tunnel automatisch per Shellscript, ports weiterleiten, Share mounten?

Status
Für weitere Antworten geschlossen.

randfee

Benutzer
Mitglied seit
08. Apr 2010
Beiträge
1.070
Punkte für Reaktionen
3
Punkte
64
Hi,

ich würde gerne die DS als "SSH-Proxy" nutzen. Was mir vorschwebt:
  • SSH-Tunnel (samt private key) beim Start automatisch aufmachen
  • minütlich oder so überprüfen ob der Tunnel noch steht und fallsl nicht, dann reinitiieren
  • Ports freigeben

das passende Shellscript hab ich auf dem Mac einfach ans Laufen gekriegt, das sieht dann so aus...
Rich (BBCode):
#!/bin/sh
ssh -l remote_user -i /path/private_key_openssh  \
-L 192.168.1.11:1125:smtphost.gaga.de:25 \
-L 192.168.1.11:1143:imap.gaga.de:143 \
-L 192.168.1.11:8080:intranet.gaga.de:8080 \
-L 192.168.1.11:1084:ftp-suse.gaga.de:84 \
-C ssh.gaga.de
Der Private-Key ist normalerweise mit Passphrase geschützt, die kann man natürlich entfernen, wüsste aber auch nicht wie ich das passwort dem script beibrächte.

Was ich jetzt gerne gewusst hätte:
  1. Wie krieg ich das Script auf dem NAS ans Laufen?
  2. Wie bekomme ich das NAS dazu den Tunnel immer aufrecht zu halten und bei Beendigung neu aufzumachen?
  3. Gibts da ein Problem mit der Firewall?
  4. Kann ich irgendwie das Laufwerk, was ich auf der anderen Seite "sehe" als Laufwerk/Share auf dem NAS "mounten"?

Danke für alle Tips & schönes Restwochenende
Randfee
 
Zuletzt bearbeitet:

goetz

Super-Moderator
Teammitglied
Sehr erfahren
Mitglied seit
18. Mrz 2009
Beiträge
14.160
Punkte für Reaktionen
407
Punkte
393
Hallo,
1. ich sehe auf die schnelle keinen Grund warum das nicht genau so auf der DS laufen sollte.
2. Script per cron welches ps nach ssh und/oder ssh.gaga.de grept und entsprechend handelt
3. wenn ssh auf beiden Seiten offen ist sollte es kein Problem sein

Gruß Götz
 

randfee

Benutzer
Mitglied seit
08. Apr 2010
Beiträge
1.070
Punkte für Reaktionen
3
Punkte
64
Hi,

könntest du mir kurz umreißen wie das das script für #2 aussehen soll? Wäre mein erster cronjob :p Hab Itari's Admin Tool installiert, aber das sagt mir auch nach Kurzinformation zu crontab/job nix.

AdminTool .jpg

merci
 

randfee

Benutzer
Mitglied seit
08. Apr 2010
Beiträge
1.070
Punkte für Reaktionen
3
Punkte
64
so, mich mal kurz daran versucht das gewollte als cronjob einzurichten... geht aber nicht wirklich wie gewollt, hier beispielhaft die beiden shell-scripte (Serverdaten ausgetauscht):

ssh_connect.sh
ssh -l user -i /usr/bin/privatekey \
-L 192.168.1.20:1125:smtphost.domain.de:25 \
-L 192.168.1.20:1143:imap.domain.de:143 \
-C whatever.de

ssh_starter.sh
#!/bin/bash

if [ "$(netstat -atn |grep 'SERVERIP' | wc -l)" != "1" ]; then
echo "restarting ssh connection"
/usr/bin/ssh_connect.sh
fi

so weit so gut, ssh_launcher.sh und ssh_connect.sh funktionieren beide in der Konsole einwandfrei. Der Tunnel ist dann offen und bleibt es auch.
netstat -atn |grep 'SERVERIP' zeigt an: ESTABLISHED.

Nun habe ich folgendes im Adminmenü eingetragen:
AdminTool .jpg

Das sollte ja eigentlich zu jeder Minute das Script ausführen welches überprüft, ob der Tunnel steht und falls nein, das Initialisierungsscript ausführen, was ja beides auch manuell geht... aber... es scheint nicht richtig zu gehen, denn: netstat -atn |grep 'SERVERIP' liefert:
DS410> netstat -atn |grep 'SERVERIP'
DS410> netstat -atn |grep 'SERVERIP'
DS410> netstat -atn |grep 'SERVERIP'
DS410> netstat -atn |grep 'SERVERIP'
DS410> netstat -atn |grep 'SERVERIP'
DS410> netstat -atn |grep 'SERVERIP'
tcp 0 0 192.168.1.20:53749 SERVERIP:22 TIME_WAIT
DS410> netstat -atn |grep 'SERVERIP'
tcp 0 0 192.168.1.20:53749 SERVERIP:22 TIME_WAIT
DS410> netstat -atn |grep 'SERVERIP'
tcp 0 0 192.168.1.20:53749 SERVERIP:22 TIME_WAIT

TIME_WAIT... steht da.. und der Tunnel funktioniert nicht. Beim manuellen Ausführen läufts einwandfrei. Woran kann es liegen?


================================================================================
edit:
Im cron.log stand:
Pseudo-terminal will not be allocated because stdin is not a terminal.

Eine Runde Googeln ergab, dass ich mal die man-page ganz lesen sollte
-t
Force pseudo-tty allocation. This can be used to execute arbi-
trary screen-based programs on a remote machine, which can be
very useful, e.g. when implementing menu services. Multiple -t
options force tty allocation, even if ssh has no local tty.

script geändert in:
ssh -t -l user -i /usr/bin/privatekey \
-L 192.168.1.20:1125:smtphost.domain.de:25 \
-L 192.168.1.20:1143:imap.domain.de:143 \
-C whatever.de

geht.
 
Zuletzt bearbeitet:
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