Ich kann in MySQL Workbench keine Verbindung über TCP / IP über SSH von einem PC aus herstellen. Was ist los?
Ich habe eine MySQL 5.1-Datenbank auf einem Ubuntu-Server namens mysql.myhost.com erstellt . Ich kann lokal darauf zugreifen. MySQL Workbench (PC) bietet die Möglichkeit, eine Verbindung über TCP über ssh herzustellen. Es wird auf Port 3306 auf dem Remote-Server ausgeführt, auf dem Befehlszeilen-MySQL einwandfrei funktioniert.
Ich habe die folgenden Sitzungsdetails verwendet:
- Verbindungsmethode: TCP / IP über SSH.
- SSH-Hostname: mysql.myhost.com : 3306
- SSH-Benutzername: Mein Linux-Login
- Öffentliche SSH-Schlüsseldatei: Meine lokale öffentliche Schlüsseldatei
- MySQL-Hostname: 127.0.0.1 MySQL
- Server-Port: 3306
- Benutzername: root
Ich erhalte eine Fehlermeldung, wenn ich versuche, eine Verbindung herzustellen: "Fehler beim Herstellen einer Verbindung zu MySQL um 127.0.0.1:3306 über den SSH-Tunnel bei mysql.myhost.com mit dem Benutzer root"
"Es kann keine Verbindung zum MySQL-Server unter '127.0.0.1' (10061) hergestellt werden."
Als weiteren Test habe ich mit Putty einen SSH-Tunnel mit Port 3306 eingerichtet und kann mit MySQL Workbench über diesen Tunnel eine Verbindung herstellen, die die Verbindungen zu meinem lokalen 3306 an den Remote-Server weiterleitet, wie oben beschrieben. In Workbench funktioniert "TCP / IP über SSH" jedoch nicht.
Sekundäre Frage: Wenn Workbench nach "Pfad zur öffentlichen SSH-Schlüsseldatei" fragt, wird meine private Schlüsseldatei nicht wirklich benötigt?
quelle
Antworten:
Ich bin auf diese Frage gestoßen, als ich selbst auf diesen Fehler gestoßen war. Ich konnte endlich die Konfiguration herausfinden.
Zum Schluss habe ich folgendes in MySQL WorkBench eingetragen.
Sie müssen den SSH-Server nur noch so konfigurieren, dass er mit Schlüsseln und nicht mit Kennwörtern arbeitet. Hoffe das wird jemandem helfen.
quelle
AuthorizedKeysFile /home/root/.ssh/authorized_keys
und dass die authorized_keys meinen PUBLIC-Schlüssel als Eintrag hatten.AllowTcpForwarding yes
auf den Remote-Server angewendet wird, dh auf den Host mit der MySQL-Instanz, zu der wir eine Verbindung herstellen möchten. oder die lokale Maschine mit MySQL Workbench installiertAllowTcpForwarding
Eintrag konfiguriert habeIch denke, der TCP / IP-über-SSH-Ansatz funktioniert, indem eine "normale" SSH-Verbindung hergestellt wird, die der MySQL-Verbindung zugrunde liegt (auf die gleiche Weise, wie Sie sie
-L
mit dem OpenSSH-Befehlszeilenclient tunneln würden ).Daher müssen Sie eine Verbindung zu einem SSH-Server auf dem Server angeben, über den Sie den Tunnel herstellen. Hier scheinen Sie zu verwenden
mysql.myhost.com:3306
, was bedeuten würde, dass Sie diesen SSH-Server (nicht MySQL) auf Port 3306 ausführen.Es ist möglich, einen MySQL-Server auf 127.0.0.1:3306 und einen SSH-Server auf Ihrer externen IP-Adresse für
mysql.myhost.com
Port 3306 zu binden , aber das ist sehr unwahrscheinlich. Ich vermute, Ihr SSH-Server lauscht auf Port 22 (Standardeinstellung).Sie sollten wahrscheinlich verwenden
mysql.myhost.com:22
. (Überprüfen Sie, ob Sie eine Verbindung über einen normalen SSH-Client wie Putty herstellen können.)quelle
Möglicherweise müssen Sie die Benutzer in der Tabelle mysql.user überprüfen.
Führen Sie diese Abfrage aus:
Sie sollten so etwas sehen:
Bitte beachte das
Wenn Sie möchten, dass Root eine Verbindung über TCP / IP herstellt, müssen Sie die IP-Adresse oder den Netzblock für einen Root-Benutzer angeben.
Etwas wie das:
oder wenn das root-Passwort für root @ localhost identisch ist
CAVEAT: root @ '%' wird normalerweise nicht empfohlen. Versuchen Sie es mit root@'10.% 'oder einem anderen Netblock für root.
Versuche es !!!
quelle
...@localhost
über den SSH-Tunnel gearbeitet werden, da für den MySQL-Server die Verbindung vom Ende des Tunnels kommt?Möglicherweise verwenden Sie eine ältere Version von MySQL Workbench und müssen diese aktualisieren. Dies ist ein Fehler in Version 6.0.8, die derzeit die Version in Ubuntu-Repositories ist. Das Update auf Version 6.3.6 hat dies für mich behoben.
Downloads hier: http://dev.mysql.com/downloads/workbench/#downloads
quelle
Eine Sache, die in keiner anderen Antwort erwähnt wird, ist die Bedeutung des OpenSSH-Formats für den Schlüssel, wie auf SO ( https://stackoverflow.com/questions/34504232/mysql-workbench-failing-to-connect-via-) angegeben. ssh-due-to-key / 38108623 # 38108623 ).
Trotz der Antwort konnte ich mit MySQL Workbench 6.3.7 (64 Bit, Windows 10) einen kennwortgeschützten Schlüssel verwenden.
quelle
Mein Problem war auf die Tatsache zurückzuführen, dass ich versuchte, einen
ed25519
SSH-Schlüssel zu verwenden. Ich habe diesen Fehler auf dem SSH-Server festgestellt inauth.log
:Nachdem ich zu einem RSA-Schlüssel gewechselt war, funktionierte alles wie erwartet.
quelle
Sie versuchen, über ssh eine Verbindung zum Server herzustellen, verwenden jedoch den mysql-Port. Der gewünschte Port ist derjenige, den Ihr SSH-Server abhört, normalerweise 22, dann localhost und 3306 für mysql-Hostnamen und -Port.
quelle
Ich stand vor dem gleichen Problem. Ich überprüfte und versuchte, AllowTcpForwarding einzustellen Ja, aber es fehlte in meiner sshd_config, also keine Hilfe. Stellen Sie sicher, dass der ssh-Hostname NICHT mit dem mysql-Hostnamen identisch ist (verwenden Sie localhost).
Wählen Sie in der Workbench +, um eine neue Verbindung hinzuzufügen, und legen Sie Folgendes fest:
Testverbindung. Es sollte erfolgreich sein, dann drücke OK.Viola!
quelle
Manchmal funktionieren mit PuTTY erstellte Schlüssel nicht. Verwenden Sie ssh-keygen auf der Linux-Box, um ein Schlüsselpaar zu erstellen. Kopieren Sie den Inhalt der neuen ID_RSA in eine Textdatei unter Windows. Stellen Sie sicher, dass Sie den Inhalt von id_rsa.pub zu authorized_keys auf der Linux-Box hinzufügen. Alle anderen Standardeinstellungen in Workbench sind in Ordnung, einschließlich 127.0.0.1 für MySQL Hostname. Natürlich muss es Standard TCP / IP über SSH sein.
quelle
Ich bin auf den gleichen Fehler gekommen. Das Problem ist "etwas" das Timeout. Ich drehte sogar den Wert auf 120 Sekunden hoch, was nicht half.
In meinem Fall könnte ich es lösen, indem ich einen nslookup myserver.com durchführe und die IP-Adresse anstelle des Hostnamens benutze. Meine Annahme ist ein Problem beim Versuch, eine Verbindung von IPv4 zu IPv6 herzustellen.
quelle
Hatte gerade das gleiche Problem auf Ubuntu-Rechnern, die sich mit einem Server verbinden, auf dem MySQL Version 5.5.29 und MySQL Workbench 5.2.40 ausgeführt werden. Der SSH-Server erfordert die Verwendung eines SSH-Schlüssels.
Ich konnte über den Root-Benutzer keine Verbindung zum MySQL-Server herstellen, sondern musste einen separaten Nicht-Root-Benutzer für die Anmeldung erstellen. Danach konnte ich mich ganz gut verbinden.
Hoffe das hilft.
quelle
OK, ich weiß, das ist eine alte Frage, aber ich habe mir stundenlang die Haare darüber gezogen. Ich habe alles überprüft, was von Bruno und Eye erwähnt wurde und alles schien gut zu sein. Dann wurde mir klar, dass es sich wirklich um eine private / öffentliche Schlüsselsache handelte. Also habe ich Pageant gestartet und meinen privaten Schlüssel hinzugefügt, damit er einen öffentlichen Schlüssel erzeugt, den MySQL Workbench lesen und voila, verbunden kann! (Als MySQL Workbench anfing zu arbeiten, war es eigentlich ein bisschen antiklimaktisch, aber auf eine glückliche Weise.)
TLDR: Verwenden Sie Pageant, um einen öffentlichen Schlüssel aus Ihrem privaten Schlüssel zu generieren.
quelle
Nur das, was ich gefunden habe ... oft erstelle ich Benutzer auf SSH-Servern ohne Shell (wie / sbin / nologin), um zu verhindern, dass sie sich bei einem Server anmelden und dort Dateien usw. erstellen können ... (für Produktionssysteme wir mache das auf firewalls).
In einer normalen Linux-Umgebung können Sie anschließend noch Ports weiterleiten, z.
und danach stellen Sie eine Verbindung von der lokalen Workstation her als:
Aber Workbench gibt einen Fehler aus, der keine Verbindung zu MySQL herstellen kann ... Wenn Sie die Shell für diesen Benutzer in / bin / bash ändern, funktioniert danach alles einwandfrei.
Keine Ahnung, warum Workbench eine lokale Shell auf dem Remote-SSH-Server benötigt.
quelle
Erstellen Sie einfach einen neuen RSA-Schlüssel mit dem für mysql workbench korrekten Format.
Zum Beispiel:
quelle