Auteur Topic: automatisch SSH Tunnel maken voor MySQL  (gelezen 3566 keer)

Offline hugoleij

  • Bedankjes
  • -Gegeven: 0
  • -Ontvangen: 0
  • Berichten: 4
automatisch SSH Tunnel maken voor MySQL
« Gepost op: 24 maart 2016, 00:13:38 »
Beste,

Sinds een paar weken ben ik een troste eigenaar van een synology!
Super blij, en tot nu toe heb ik alles voor elkaar gekregen wat ik wil, mede dankzij dit forum!

Loop tegen een ding waar ik niet aan uitkom.
Ik heb op mijn server een website draaien die data controleert, de data haal ik op vanuit een MySQL server.
Dit gaat via een SSH tunnel, echter is het probleem dat mijn synology soms (1x per week, soms 1x per dag) de verbinding verbreekt.

Als ik thuis ben kan ik via terminal de volgende commands uitvoeren:
1) ssh -fNg -L 3307:127.0.0.1:3306 myuser@remotehost.com
2) geen ik het wachtwoord in
3) mysql -h 127.0.0.1 -P 3307 -u dbuser -p db
4) geef ik het wachtwoord in

Het probleem is dat ik dit dus alleen kan doen vanuit huis, en meestal klapt die eruit als ik niet thuis ben.

Is het een mogelijkheid om bijvoorbeeld een sh bestand te maken die ik kan laten uitvoeren via "cronjob editor" (bijvoorbeeld elk uur, zodat ik zeker weer dat mijn verbinding in stand blijft).

Groetjes Hugo

  • Mijn Synology: DS215j
  • HDD's: 1X WD30EFRX Red

Stephan296

  • Gast
Re: automatisch SSH Tunnel maken voor MySQL
« Reactie #1 Gepost op: 24 maart 2016, 00:57:19 »
Volgens mij kun je er beter een service van maken.
Dan kun je met een sh file of een andere service controleren of de ssh tunnel (dus de service) nog draait dit kun je zelfs per minuut instellen
Zo niet dan start hij de service weer.

Snap je het nog? Hahaha

Offline hugoleij

  • Bedankjes
  • -Gegeven: 0
  • -Ontvangen: 0
  • Berichten: 4
Re: automatisch SSH Tunnel maken voor MySQL
« Reactie #2 Gepost op: 24 maart 2016, 01:13:49 »
Beste Stephan,

Dank je voor je antwoord, ik snap wat je zegt.
Heb je ook enig idee hoe ik dit voor elkaar krijg?
  • Mijn Synology: DS215j
  • HDD's: 1X WD30EFRX Red

Offline algernonz

  • Bedankjes
  • -Gegeven: 0
  • -Ontvangen: 3
  • Berichten: 14
Re: automatisch SSH Tunnel maken voor MySQL
« Reactie #3 Gepost op: 24 maart 2016, 14:53:55 »
Als de verbinding aktief is, kan je dat in de proceslijst terugzien:
 $ ps -w | grep -v grep | grep myuser@remotehost.com

Met het commando "echo $?" krijg je een 0 terug als dit proces in de lijst bestaat (dus de verbinding is er), en je krijgt een 1 als het proces weg is.
Dus als je 1x per uur test op de aanwezigheid van 0, dan start je de verbinding opnieuw als die er niet is. Je kunt die check natuurlijk ook andersom doen.

Het script in cron zou er zo ongeveer uit kunnen zien (niet getest):

#!/bin/sh
ps -w | grep -v grep | grep myuser@remotehost.com &>/dev/null &
if
[[ $? == 0 ]]; then echo "do nothing"
else
ssh -fNg -L 3307:127.0.0.1:3306 myuser@remotehost.com
etcetera
fi

Offline hugoleij

  • Bedankjes
  • -Gegeven: 0
  • -Ontvangen: 0
  • Berichten: 4
Re: automatisch SSH Tunnel maken voor MySQL
« Reactie #4 Gepost op: 28 maart 2016, 14:34:42 »
Beste algernonz,

Dank je wel voor je antwoord, helaas kom ik er niet aan uit.
Ik ben te nieuw hiervoor om dit werkend te krijgen, ben nog altijd aan t zoeken naar iets zodat ik het voor elkaar kan krijgen.

Ondertussen het volgende gevonden aan de hand van jouw antwoord:
http://www.brandonchecketts.com/archives/creating-a-permanent-ssh-tunnel-between-linux-servers
http://stackoverflow.com/questions/2241063/bash-script-to-setup-a-temporary-ssh-tunnel/15198031#15198031

[EDIT]
Dit heb ik tot nu toe...
#!/bin/sh
ps -w | grep -v grep | grep readonly@DB_ADRES &>/dev/null &
if
[[ $? == 0 ]]; then echo "do nothing"
else
ssh -fNg -L 3307:127.0.0.1:3306 readonly@DB_ADRES
mysql -h 127.0.0.1 -P 3307 -u readonly -p DB_NAAM
fi

Als ik het bestand run krijg ik:
do nothing, echter is de verbinding niet actief

Bedankt alvast!

Gr Hugo
  • Mijn Synology: DS215j
  • HDD's: 1X WD30EFRX Red

Offline Pippin

  • MVP
  • *
  • Bedankjes
  • -Gegeven: 103
  • -Ontvangen: 529
  • Berichten: 2.724
  • a.k.a. MMD
Re: automatisch SSH Tunnel maken voor MySQL
« Reactie #5 Gepost op: 28 maart 2016, 14:48:17 »

Citaat
om te kijken wat er gebeurt?
Weet niet veel van scripts maar bedoel je logging?

Als je het script tijdens testen op de command line test kun je
#! /bin/sh -exdoen in je script. Dan zie je in je scherm wat er gebeurt.

En een gokje, om naar een file te loggen:
#! /bin/sh -ex > /var/log/log.txtWerkt misschien ook ?
DS414
OpenVPN #1: Beter beveiligen OpenVPN #2: Beter beveiligen als client

I gloomily came to the ironic conclusion that if you take a highly intelligent person and give them the best possible, elite education, then you will most likely wind up with an academic who is completely impervious to reality.
Halton Arp

Offline hugoleij

  • Bedankjes
  • -Gegeven: 0
  • -Ontvangen: 0
  • Berichten: 4
Re: automatisch SSH Tunnel maken voor MySQL
« Reactie #6 Gepost op: 28 maart 2016, 15:06:04 »
Was een foutje van mij kant, de echo komt wel zichtbaar.
Post aangepast.

Als ik
#! /bin/sh -ex > /var/log/log.txten daar:
H@NAS:~$ sudo vi /var/log/log.txt
Dan blijft log.txt leeg, dus dat werkt niet.

Ik krijg dus do nothing terug, dus helaas werkt die nog niet.
Misschien het het te maken dat ik mijn wachtwoorden zo niet kan invullen?
  • Mijn Synology: DS215j
  • HDD's: 1X WD30EFRX Red

Offline algernonz

  • Bedankjes
  • -Gegeven: 0
  • -Ontvangen: 3
  • Berichten: 14
Re: automatisch SSH Tunnel maken voor MySQL
« Reactie #7 Gepost op: 29 maart 2016, 18:04:47 »


Ik krijg dus do nothing terug, dus helaas werkt die nog niet.
Misschien het het te maken dat ik mijn wachtwoorden zo niet kan invullen?

Hoi Hugo,

Ik verwachtte al dat je enkele stappen verder tegen die ssh en db authenticatie zou aanlopen.
Het is handiger om voor de eerste (SSH-login) met een rsa-key werken, dan omzeil je in het script die loginpassword-hobbel. Bij de database login kan je een passwd in het script omzeilen door in de user's .my.cnf een include neer te zetten naar het volgende.
 [client]
socket=/tmp/mysql.sock
!include /root/.mysql_root_password.cnf

Dat password in .mysql_root_etc. is dan wel gecrypt.

=================
Edit:

Ik las iets te snel over je post heen.
Het lijkt erop dat de verbinding weg is, maar het proces nog wel aanwezig. Vandaar dan die hardnekkige "do nothing".
Die check moet dus anders; op de aanwezigheid van verbinding zelf.

  ssh -fNg -L 3307:127.0.0.1:3306 user@192.168.1.56

$ nc -vz 127.0.0.1 3307
localhost [127.0.0.1] 3307 (?) open

 $ echo $?
0

Zo werkt -ie wel. En als -ie een "1" teruggeft is je verbinding weg.
(Als je nc niet kunt vinden, installeer dan netcat via ipkg).

P.S. Hier staan ook nog wat leuke ideeen over persistent ssh connecties:
http://serverfault.com/questions/216125/how-can-i-create-persistent-ssh-connection-to-stream-commands-over-a-period-of


 

VERPLAATST: Video Station indexeert niet (automatisch)

Gestart door Robert KoopmanBoard Synology DSM 6.0

Reacties: 0
Gelezen: 1290
Laatste bericht 12 december 2016, 15:51:23
door Robert Koopman
SSL certificaat automatisch vernieuwen

Gestart door RubenosBoard Synology DSM algemeen

Reacties: 2
Gelezen: 831
Laatste bericht 24 april 2023, 13:33:24
door jr212
Gezocht: duidelijke handleiding automatisch downloaden van series.

Gestart door hyenakeBoard SickBeard

Reacties: 6
Gelezen: 5545
Laatste bericht 15 april 2014, 11:38:15
door Ben(V)
NZBget automatisch laten downloaden van nzb

Gestart door sietBoard NZBGet

Reacties: 2
Gelezen: 4467
Laatste bericht 17 juni 2011, 10:10:43
door ronaldvh
DS Photo+ photo Backup werkt niet automatisch/in achtergrond

Gestart door rtf74Board iOS Apps (iPhone, iPad en iPod)

Reacties: 25
Gelezen: 21849
Laatste bericht 20 juli 2016, 23:56:16
door Sylvester