Seite 1 von 2
MySQL C API über libssh verwenden.
Verfasst: Fr Nov 21, 2014 7:46 am
von lxuser
Hallo Community,
ich bin Anfänger in C und gerade dabei ein Programm zu schreiben mit dem man MySQL Datenbanken über SSH bearbeiten kann.
Ich nutze dafür libssh und das MySQL C API.
SSH verbindung aufbauen ist kein problem aaaaber wie kann ich mich mit MySQL nun über libssh auf den server verbinden?
Die einzige möglichkeit die ich sehe ist das SSH portforwarding zu nutzen und mich mit MySQL auf lokalhost zu verbinden
Geht das nicht besser? würds gerne vermeiden unnötig lokale Ports zu öffnen
Wäre super wenn jemand Beispielcode hätte wie ich das MySQL login an libssh weiterleiten kann

Re: MySQL C API über libssh verwenden.
Verfasst: Fr Nov 21, 2014 8:36 am
von mfro
Mysql kann, wenn entsprechend kompiliert, selbstständig SSL-verschlüsselte Datenbankverbindungen aufbauen.
Die Arbeit, die Du dir da machen willst, ist schon getan:
http://dev.mysql.com/doc/refman/5.0/en/ ... tions.html und Bestandteil des C-API.
Server und client müssen dann nur mit den richtigen Parametern gestartet werden.
Re: MySQL C API über libssh verwenden.
Verfasst: Fr Nov 21, 2014 8:45 am
von lxuser
Nicht SSL sondern SSH
Re: MySQL C API über libssh verwenden.
Verfasst: Fr Nov 21, 2014 9:03 am
von mfro
lxuser hat geschrieben:Nicht SSL sondern SSH
Was hast Du gegen SSL?
Re: MySQL C API über libssh verwenden.
Verfasst: Fr Nov 21, 2014 9:51 am
von lxuser
mfro hat geschrieben:lxuser hat geschrieben:Nicht SSL sondern SSH
Was hast Du gegen SSL?
Nun über SSL kann ich keine weiteren Befehle an das Betriebssystem schicken.
Ausserdem muss ich bei meinem Server die Adresse von dem PC angeben der externe Zugriffserlaubnis auf den MySQL Server hat, das heißt ich muss jedesmal meine IP adresse angeben wenn ich das nicht über SSH Tunnel.
Allgemein wäre es interesannt zu wissen wie man sowas programmiert.
Re: MySQL C API über libssh verwenden.
Verfasst: Sa Nov 22, 2014 9:13 am
von mfro
lxuser hat geschrieben:mfro hat geschrieben:lxuser hat geschrieben:Nicht SSL sondern SSH
Was hast Du gegen SSL?
Nun über SSL kann ich keine weiteren Befehle an das Betriebssystem schicken.
und das ist meiner Ansicht nach so ganz gut eingerichtet. Würde der mysql-Server auf ssh-Verbindungen lauschen (so habe ich dich verstanden), würden - so er das erlauben würde (brrr)- Betriebssystemkommandos mit der uid des mysql-Servers ausgeführt (und hätten z.B. zunächst mal uneingeschränkte Zugriffsrechte auf beispielsweise alle Datenbankdateien).
Das erzeugt bei mir Gänsehaut...
lxuser hat geschrieben:
Ausserdem muss ich bei meinem Server die Adresse von dem PC angeben der externe Zugriffserlaubnis auf den MySQL Server hat, das heißt ich muss jedesmal meine IP adresse angeben wenn ich das nicht über SSH Tunnel.
Allgemein wäre es interesannt zu wissen wie man sowas programmiert.
Wenn Du eine anderes als das standardmäßige Verbindungsprotokoll verwenden willst, müsstest Du entweder ssh port forwarding verwenden oder den MySQL-Server selbst erweitern. Letzteres würde ich lieber lassen, das könnte zu einem Lebenswerk werden. Möglicherweise könnte man dasselbe auch mit einer geschickten Kombination von Server- und Client-Plugins realisieren, so etwas habe ich aber noch nie probiert.
Hast Du bedacht, daß Du für ssh immer einen Shell-account auf dem Zielsystem brauchst? Das ist keineswegs eine Selbstverständlichkeit, eher die Ausnahme.
Was Du eigentlich genau machen/bezwecken willst, habe ich noch nicht verstanden. Ein Datenbankconnector ist ein Datenbankconnector und eine Remote-Shell-Verbindung ist eine Remote-Shell-Verbindung. Eine Verquickung aus beidem ziemlich wahrscheinlich ein sicherheitstechnischer Alptraum.
Re: MySQL C API über libssh verwenden.
Verfasst: Sa Nov 22, 2014 9:33 am
von lxuser
und das ist meiner Ansicht nach so ganz gut eingerichtet. Würde der mysql-Server auf ssh-Verbindungen lauschen (so habe ich dich verstanden), würden - so er das erlauben würde (brrr)- Betriebssystemkommandos mit der uid des mysql-Servers ausgeführt (und hätten z.B. zunächst mal uneingeschränkte Zugriffsrechte auf beispielsweise alle Datenbankdateien).
Das erzeugt bei mir Gänsehaut...
neiiin
Ich will als erstes eine SSH verbindung zum Server aufbauen und als Tunnel verwenden so das ich dann Befehle auf dem Betriebssystem ausführen kann.
Über den Tunnel kann ich mich dann zb bei MySQL anmelden oder andere dinge tun.
Wenn Du eine anderes als das standardmäßige Verbindungsprotokoll verwenden willst, müsstest Du entweder ssh port forwarding verwenden oder den MySQL-Server selbst erweitern. Letzteres würde ich lieber lassen, das könnte zu einem Lebenswerk werden. Möglicherweise könnte man dasselbe auch mit einer geschickten Kombination von Server- und Client-Plugins realisieren, so etwas habe ich aber noch nie probiert.
Hast Du bedacht, daß Du für ssh immer einen Shell-account auf dem Zielsystem brauchst? Das ist keineswegs eine Selbstverständlichkeit, eher die Ausnahme.
Was Du eigentlich genau machen/bezwecken willst, habe ich noch nicht verstanden. Ein Datenbankconnector ist ein Datenbankconnector und eine Remote-Shell-Verbindung ist eine Remote-Shell-Verbindung. Eine Verquickung aus beidem ziemlich wahrscheinlich ein sicherheitstechnischer Alptraum.
Ja sieht so aus als gehts nur mit port forwarding hmm.
SSH zugang hab ich natürlich

Kann mir auchnicht vorstellen das das so selten ist ausser vllt bei billigem Webspace oder ollen Windows Kisten.
Bei Linux Servern sollte sowas dabei sein.
Das ist Sicherheitstechnich ehr ziemlich gut.
Man braucht nur einen einzigen Port nach aussen zu öffnen den Port 22 und über den kann man dann Befehle ans Betriebsystem schicken und z.b. MySQL datenbanken bearbeiten.
Re: MySQL C API über libssh verwenden.
Verfasst: Sa Nov 22, 2014 11:02 am
von mfro
lxuser hat geschrieben:
Das ist Sicherheitstechnich ehr ziemlich gut.
Man braucht nur einen einzigen Port nach aussen zu öffnen den Port 22 und über den kann man dann Befehle ans Betriebsystem schicken und z.b. MySQL datenbanken bearbeiten.
Na ja, da sind wir wohl unterschiedlicher Ansicht.
Eine SSL-Verbindung zur Datenbank erlaubt ausschließlich Datenbankabfragen. Sonst nix. Das würde ich eher als "sicher" bezeichnen. Hackt jemand diese Verbindung, kann er im schlimmsten Fall die Datenbank kaputt machen.
Schafft jemand deine ssh-Verbindung, hat er die Datenbank am Wickel _und_ deinen Server gleich mit.
Sicherheitstechnisch erscheint mir sinnvoller, das funktional zu trennen.
Re: MySQL C API über libssh verwenden.
Verfasst: Sa Nov 22, 2014 12:24 pm
von lxuser
Bei MySQL muss man sich ja trotzdem noch mit username und passwort anmelden.
Ich versteh dein Problem nicht.
Re: MySQL C API über libssh verwenden.
Verfasst: Sa Nov 22, 2014 4:13 pm
von Xin
Kannst Du kurz erklären, warum Du dieses Vorhaben hast? @lxuser?