it-swarm.com.de

Der Versuch, MySQL Workbench mit TCP / IP über SSH zu verwenden, konnte keine Verbindung herstellen

Ich kann keine Verbindung über TCP/IP über SSH in MySQL Workbench von einem PC aus herstellen. Was ist los?

Ich habe eine MySQL 5.1-Datenbank auf einem Ubuntu-Server erstellt mysql.myhost.com. Ich kann lokal darauf zugreifen. MySQL Workbench (PC) bietet an, eine Verbindung über TCP über SSH) herzustellen. Es wird auf Port 3306 auf dem Remote-Server ausgeführt, auf dem die 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

Beim Versuch, eine Verbindung herzustellen, wird eine Fehlermeldung angezeigt: "Fehler beim Herstellen einer Verbindung zu MySQL um 127.0.0.1:3306 über den SSH-Tunnel unter mysql.myhost.com mit dem Benutzer root"

"Verbindung zu MySQL-Server unter '127.0.0.1' (10061) nicht möglich"

Als weiteren Test - Ich habe mit PuTTY einen SSH-Tunnel mit Port 3306 eingerichtet und kann mit MySQL Workbench über diesen Tunnel eine OK-Verbindung herstellen, die wie oben beschrieben Verbindungen zu meinem lokalen 3306 an den Remote-Server weiterleitet. In Workbench funktioniert "TCP/IP über SSH" jedoch nicht.

Sekundäre Frage: Wenn Workbench nach "Pfad zur öffentlichen SSH-Schlüsseldatei" fragt, benötigt es nicht wirklich meine private Schlüsseldatei?

43
Dizzley

Ich bin auf diese Frage gestoßen, als ich selbst auf diesen Fehler gestoßen bin. Ich konnte endlich die Konfiguration herausfinden.

  1. Ich habe in /etc/mysql/my.cnf nichts berührt, das bereits bind_address = 127.0.0.1 hat. So kann nur localhost eine Verbindung herstellen.
  2. Ich benutze OpenSSH Server. Also habe ich in seiner Konfigurationsdatei/etc/ssh/sshd_config von nein zu ja den Parameter geändert, der für TCP Weiterleitung, also - verantwortlich ist) AllowTcpForwarding yes.
  3. Schließlich habe ich Folgendes in MySQL WorkBench eingegeben.

    • SSH-Hostname: 192.168.0.8:22 (mein SSH-Server überwacht Port 22)
    • SSH-Benutzername: sshuser
    • SSH-Schlüsseldatei: * C:\Users\windowsuser\.ssh\id_rsa * (sollte ein privater Schlüssel sein, obwohl dort öffentlich steht)
    • MySQL-Hostname: 127.0.0.1 (dies sollte nicht geändert werden, da der MySQL-Server standardmäßig nur an localhost gebunden ist, was ich nicht geändert habe)
    • MySQL Server Port: 3306 (ebenfalls Standard)
    • Benutzername: root

Sie müssen nur noch Ihren SSH-Server so konfigurieren, dass er mit Schlüsseln und nicht mit Kennwörtern arbeitet. Hoffe das wird jemandem helfen.

31
Eye

Ich denke, der TCP/IP-über-SSH-Ansatz funktioniert durch Herstellen einer "normalen" SSH-Verbindung, die der MySQL-Verbindung zugrunde liegt (auf die gleiche Weise, wie Sie mit -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 mysql.myhost.com:3306 Zu verwenden, was bedeuten würde, dass Sie diesen SSH-Server (nicht MySQL) auf Port 3306 ausführen.

Es ist möglich, einen MySQL-Server an 127.0.0.1:3306 und einen SSH-Server an Ihre externe IP-Adresse für mysql.myhost.com An Port 3306 zu binden, aber das ist sehr unwahrscheinlich. Ich denke, Ihr SSH-Server überwacht Port 22 (Standardeinstellung).

Sie sollten wahrscheinlich mysql.myhost.com:22 Verwenden. (Überprüfen Sie, ob Sie auch über einen normalen SSH-Client wie PuTTY eine Verbindung herstellen können.)

8
Bruno

Möglicherweise müssen Sie die Benutzer in der Tabelle mysql.user überprüfen.

Führen Sie diese Abfrage aus:

SELECT user,Host FROM mysql.user;

Sie sollten so etwas sehen:

mysql> SELECT user,Host,password FROM mysql.user;
+------------------+-------------+-------------------------------------------+
| user             | Host        | password                                  |
+------------------+-------------+-------------------------------------------+
| root             | localhost   | *7A670E02260CDEEFF062DD08F3A6F6DA079998CB |
| ping             | %           | *124E1DB56CC8D6E2FEE8315BB2544BF04B980DB6 |
| admin            | 10.67.135.% | 1a6858054a41fede                          |
| icorbin          | 10.67.135.% | 366ed93a7396650e                          |
+------------------+-------------+-------------------------------------------+
4 rows in set (0.00 sec)

Bitte beachte das

  • root @ localhost kann sich nur von localhost aus anmelden.
  • ping @ '%' kann sich über TCP/IP anmelden
  • [email protected]% kann sich nur über diesen Netblock über TCP/IP anmelden
  • [email protected]% kann sich nur über diesen Netblock über TCP/IP anmelden

Wenn root eine Verbindung über TCP/IP herstellen soll, müssen Sie die IP-Adresse oder den Netblock für einen Root-Benutzer angeben.

Etwas wie das:

GRANT ALL PRIVILEGES ON *.* TO [email protected]'%' IDENTIFIED BY 'whateverpassword';

oder wenn das root-Passwort für root @ localhost identisch ist, dann

GRANT ALL PRIVILEGES ON *.* TO [email protected]'%' IDENTIFIED BY PASSWORD '*7A670E02260CDEEFF062DD08F3A6F6DA079998CB ';

CAVEAT: root @ '%' wird normalerweise nicht empfohlen. Vielleicht versuchen Sie [email protected]'10.% 'oder einen anderen Netblock für root.

Versuche es !!!

8
RolandoMySQLDBA

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-Repositorys ist. Das Update auf Version 6.3.6 hat dies für mich behoben.

Downloads hier: http://dev.mysql.com/downloads/workbench/#downloads

3
Gleasonator

Eine Sache, die in keiner anderen Antwort erwähnt wird, ist die Bedeutung des OpenSSH-Formats für den Schlüssel, wie unter SO ( https://stackoverflow.com/questions/34504232) angegeben/mysql-workbench-Fehler beim Herstellen einer Verbindung über ssh aufgrund eines Schlüssels/38108623 # 3810862 ).

Trotz der dortigen Antwort konnte ich mit MySQL Workbench 6.3.7 (64 Bit, Windows 10) einen kennwortgeschützten Schlüssel verwenden.

2
Thomas

Mein Problem war auf die Tatsache zurückzuführen, dass ich versuchte, ein ed25519 SSH-Schlüssel. Ich habe diesen Fehler auf dem SSH-Server in auth.log:

sshd[25251]: Connection closed by 192.168.x.x [preauth]

Nachdem ich auf einen RSA-Schlüssel umgestellt hatte, funktionierte alles wie erwartet.

2
jbiz

Sie versuchen, über ssh eine Verbindung zum Server herzustellen, verwenden jedoch den MySQL-Port. Der gewünschte Port ist der, den Ihr SSH-Server abhört, normalerweise 22, dann localhost und 3306 für MySQL-Hostnamen und -Port.

1
Justin Buser

Ich habe den gleichen Fehler gemacht. Das Problem ist "etwas" das Timeout. Ich drehte sogar den Wert auf 120 Sekunden, was nicht half.

In meinem Fall könnte ich es lösen, indem ich ein nslookup myserver.com mache und die IP-Adresse anstelle des Hostnamens verwende. Meine Annahme ist ein Problem beim Versuch, eine Verbindung von IPv4 zu IPv6 herzustellen.

1
Markus Zeller

Manchmal funktionieren von PuTTY erstellte Schlüssel nicht. Verwenden Sie ssh-keygen auf der Linux-Box, um ein Schlüsselpaar zu erstellen. Kopieren Sie den Inhalt des neuen id_rsa in eine Textdatei unter Windows. Stellen Sie sicher, dass Sie den Inhalt von id_rsa.pub zu autorisierten Schlüsseln 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.

1
mcmacerson

Ich hatte das gleiche Problem. Ich habe überprüft und versucht, AllowTcpForwarding Yes zu setzen, aber es fehlte in meiner sshd_config, also keine Hilfe. Stellen Sie sicher, dass der ssh-Hostname [~ # ~] nicht [~ # ~] der gleiche ist wie der mysql-Hostname (verwenden localhost).

Wählen Sie in der Workbench +, um eine neue Verbindung hinzuzufügen, und legen Sie Folgendes fest:

  • verbindungsmethode: Standard TCP/IP über SSH
  • SSH-Hostname: 192.168.0.50:22 (IP und Port des Remote-SSH-Servers platzieren (optional))
  • SSH-Benutzername: sshuser
  • Sie können das Passwort festlegen oder an der Eingabeaufforderung hinzufügen
  • MYSQL-Hostname: localhost oder 127.0.0.1
  • MYSQL Server-Port: 06
  • Sie können das Passwort festlegen oder an der Eingabeaufforderung hinzufügen

Testverbindung. Es sollte erfolgreich sein, dann drücken Sie OK.Viola!

1
Reagan Ochora

Ich habe den gleichen Fehler gemacht. Mein Fall:

  • Ubuntu 18.04
  • mySQL Workbench 8.0.18
  • sSH-Zugriff ohne Passwort (nur über öffentliche/private SSH-Schlüssel)

Ich habe dieses Problem gelöst, nachdem:

  1. entfernen mysql-workbench-community (zuvor über die MySQL-Website installiert):

    Sudo apt entfernen mysql-workbench-community -y

  2. installieren mysql-workbench

    Sudo apt installiert mysql-workbench -y

  3. neue Verbindung hinzufügen

  4. klicken Sie auf "In Schlüsselbund speichern" für MySQL (nicht für SSH-Benutzer) und legen Sie das Passwort fest
  5. klicken Sie auf "Verbindung testen".
  6. lassen Sie nach Eingabe des Passworts die Eingabe leer und aktivieren Sie "Passwort speichern".
  7. oK klicken"
0
ktretyak

Lauf

SELECT user,Host FROM mysql.user;

Stellen Sie sicher, dass der Benutzer, für den Sie sich über Workbench anmelden möchten, in der Spalte Host localhost und nicht %.

Wenn es heißt %, behebe es mit:

UPDATE mysql.user SET Host="localhost" WHERE user="yourusername";

(Angenommen, Sie haben diesen Benutzer für die Arbeit mit Workbench über SSH oder natürlich erstellt, da dieser Benutzer sich nicht über Remote-TCP anmelden kann.)

0
Nick

OK, ich weiß, dass dies eine alte Frage ist, aber ich habe mir stundenlang die Haare darüber gezogen. Ich habe alles überprüft, was Bruno und Eye erwähnt haben, und alles schien gut zu sein. Dann wurde mir klar, dass es wirklich ein privater/öffentlicher Schlüssel war. Also habe ich Pageant gestartet und meinen privaten Schlüssel hinzugefügt, damit ein öffentlicher Schlüssel erstellt wird, den MySQL Workbench lesen und voila, verbunden! (Es war tatsächlich etwas enttäuschend, als MySQL Workbench tatsächlich zu arbeiten begann, aber auf eine glückliche Art und Weise.)

TLDR: Verwenden Sie Pageant, um einen öffentlichen Schlüssel aus Ihrem privaten Schlüssel zu generieren.

0
Bonnie

Hatte gerade das gleiche Problem auf einem Ubuntu-Computer, der eine Verbindung zu einem Server mit MySQL Version 5.5.29 und MySQL Workbench 5.2.40 herstellte. Der SSH-Server erfordert die Verwendung eines SSH-Schlüssels.

Ich konnte über den Root-Benutzer keine Verbindung zum MySQL-Server herstellen. Stattdessen musste ich einen separaten Nicht-Root-Benutzer erstellen, der für die Anmeldung verwendet werden sollte. Danach konnte ich mich gut verbinden.

Hoffe das hilft.

0
Kyle Coots