it-swarm.com.de

Mit Workbench kann keine Verbindung zur MySQL-Datenbank über SSH hergestellt werden

Ich versuche, über SSH-Tunneling von einem unserer Web-App-Server mit MySQL Workbench eine Verbindung zu meiner Datenbank herzustellen. Hier ist die Grundkonfiguration; Beachten Sie, dass ich aus Sicherheitsgründen einige Werte im Screenshot geändert habe.

Workbench screenshot

Das Problem ist, dass jedes Mal, wenn ich versuche, eine Verbindung über einen SSH-Tunnel von einem unserer App-Server herzustellen, die folgende Fehlermeldung angezeigt wird:

Verbindung zu us-east-1.amazonaws.com über den SSH-Tunnel unter computer.amazonaws.com mit dem Benutzer social_shop_prod fehlgeschlagen. Es kann keine Verbindung zum MySQL-Server unter 127.0.0.1 hergestellt werden.

Wenn ich jedoch dieselben Anmeldeinformationen über SSH über die folgende Befehlszeile verwende:

mysql -u social_shop_prod -h us-east-1.amazonaws.com -p

Ich kann erfolgreich eine Verbindung herstellen und den interaktiven MySQL-Befehl Prompt erhalten.

Ich habe hier mit dem Rest meines Entwicklungsteams gesprochen und keiner von uns kann herausfinden, warum ich mit Workbench nicht über SSH von unseren App-Servern tunneln kann. aber wenn ich SSH zu einem unserer App-Server und Verbindung zu MySQL über die Befehlszeile; Ich kann mich erfolgreich verbinden.

Und warum wird versucht, eine Verbindung über 127.0.0.1 herzustellen? Das habe ich in der Konfiguration nicht angegeben; Meine Hosts-Datei leitet die unten gezeigten Domains auch nicht auf diese IP um.

Jede konstruktive Eingabe wird sehr geschätzt.

10
Frank Rosario

Da Sie eine Verbindung über einen SSH-Tunnel herstellen, bedeutet dies, dass der MySQL-Port 3306 von us-east-1.amazonaws.com lokal auf Ihrem Computer geöffnet wird. Die IP-Adresse Ihres Computers lautet 127.0.0.1 oder localhost. Wenn Sie eine Verbindung zum MySQL-Server auf us-east-1.amazonaws.com herstellen, greifen Sie tatsächlich über 127.0.0.1, d. H. Ihren Computer, darauf zu. Wenn Sie einen anderen Tunnel geöffnet hatten oder MySQL lokal auf Ihrem Computer ausgeführt wurde, kann es sein, dass ein anderer MySQL-Server Ihre Authentifizierungsversuche ablehnt

Es gibt einige Tests, die Sie ausprobieren können:

1. Welche Ports hört Ihr Windows-Computer ab

Von einer Eingabeaufforderung: netstat -a (listet alle offenen Ports auf)

Unter Linux wäre es: netstat -tlpn

2. Grundlegender Konnektivitätstest

Über eine DOS-Eingabeaufforderung oder eine Linux-Konsole: Telnet 127.0.0.1 3306

Wenn Sie eine Auszeit bekommen oder ein anderes Programm antwortet, ist Ihr Tunnel nicht richtig eingerichtet.

. Ändern Sie die Portnummer, die MySQL Workbench lokal öffnet

Wir gehen davon aus, dass die MySQL-Workbench den Tunnel auf Ihrem Computer erstellt. Wenn ja, versuchen Sie in der MySQL-Workbench, durch eine andere Portnummer wie 9000 zu tunneln.

Stellen Sie sicher, dass 9000 nicht als offener Port von netstat -a aufgeführt ist

Wenn Sie SSH-Zugriff auf us-east-1.amazonaws.com haben

4. Versuchen Sie, von us-east-1.amazonaws.com eine Verbindung zu MySQL herzustellen

mysql -u myuser -h 127.0.0.1 -p

Und wie Rolando sagte, möchten Sie überprüfen, ob Sie mit den richtigen Anmeldeinformationen verbunden sind. Wenn Sie beispielsweise eine Verbindung als [email protected] herstellen und einen Benutzer myuser ohne Host haben, können Sie wahrscheinlich keine Verbindung über [email protected] herstellen.

5
Craig Efrein

Der Grund für die Kontaktaufnahme mit 127.0.0.1 liegt darin, dass der Tunnel einen Port auf Ihrem lokalen Computer mit dem Remote-Host verbindet. Die Nachricht scheint darauf hinzudeuten, dass keine SSH-Verbindung hergestellt wird.

Versuchen Sie dies über die Befehlszeile:

ssh -L 33000:remotehost:3306 [email protected]

Stellen Sie sicher, dass SSH weitergeleitete Ports zulässt. Wenn Sie eine Nachricht erhalten, die besagt, dass die Weiterleitung nicht zulässig war oder abgelehnt wurde, ist dies der Grund.

Um dies zu beheben, müssten Sie die Serverkonfiguration ändern. Fügen Sie diese Konfiguration dem SSH-Server hinzu:

AllowTcpForwarding yes

Vergessen Sie nicht, den Server neu zu starten, um diese Konfiguration zu aktivieren.

2
Mei

Ich habe mich fast 2 Wochen lang mit diesem Problem beschäftigt, jetzt habe ich es geschafft, es zu beheben. Ich werde es hier posten, damit mehr Leute es versuchen können.

Ok, ich verwende OpenSSH (Win10 native) und Workbench 8.

Schritt für Schritt:
1. Fügen Sie dem Agenten Ihre SSH-Host-Schlüssel mit ssh-add hinzu.
2. Generieren Sie die Schlüsselpaare mit ssh-keygen. In meinem Fall werden diese Dateien gemäß den Installationskonfigurationen automatisch an Users/myUser/.ssh Gegeben.
3. Fügen Sie den öffentlichen Schlüssel zur Datei authorized_keys hinzu (die sich in meinem Fall in Ihrem Serverinstallationspfad befinden muss, in meinem Fall Windows/System32/OpenSSH/.ssh) ohne Erweiterungen.
4. Fügen Sie die generierten Schlüssel, die Sie gerade erstellt haben, mit ssh-add zum Agenten hinzu.

Die obigen Schritte sind so ziemlich die Konfiguration eines Befehlszeilen-SSH-Servers, von dem ich herausfinde, dass das OP, das bereits für seine Verbindung ausgeführt wurde, über das Terminal funktioniert. Um MySQL Workbench 8 zu konfigurieren, machen Sie genau das Gleiche, außer dass Sie private_key.pem in ein OpenSSH-Format konvertieren müssen bevor Sie sie zu Users/myUser/.ssh und OpenSSH_instalation_path/.ssh verschieben

  1. Konvertieren Sie private_key.pem mit PUTTYgen in das OpenSSH-Format.
  2. Kopieren Sie das Feld "Öffentlicher Schlüssel zum Einfügen in OpenSSH Authorized_keys".
  3. Speichern Sie den öffentlichen Schlüssel in den Ordnern User/myUser/.ssh Und OpenSSH_instalation_path/.ssh
  4. Fügen Sie den von PuTTY kopierten Schlüssel in die Datei autorisierte_Tasten im Ordner OpenSSH_instalation_path/.ssh Ein.
  5. Exportieren Sie den OpenSSH-Formatschlüssel in User/myUser/.ssh.
  6. Starten Sie die Dienste sshd und mysql neu
  7. Konfigurieren Sie die Workbench so, dass mit dem konvertierten privaten Schlüssel eine Verbindung zum SSH-Server hergestellt wird.

UPDATE: In Ihrer Datei sshd_config müssen Sie Folgendes festlegen:

PermitRootLogin ohne Passwort
PubkeyAuthentication ja
PasswortAuthentifizierungsnr
PermitEmptyPasswords-Nr
AllowTcpForwarding yes

BITTE LESEN SIE:

Ich bin ein unerfahrener Analyst. Wenn also ein fortgeschrittener Benutzer weiß, welcher der beiden .ssh-Ordner der richtige ist, teilen Sie uns dies bitte mit. Ich finde das OpenSSH diesbezüglich etwas mehrdeutig.
Dies funktionierte für mich beim Einstellen einer lokalen Entwicklungsumgebung nur mit localhost. Nur zu Lernzwecken.
Möglicherweise möchten Sie MySQL Workbench-Benutzern myUser @ localhost hinzufügen, bevor Sie die Verbindung testen.
Wenn es wirklich gebraucht wird, kann ich Bilder hinzufügen.

1
Rafael Corrêa

Ich hatte ein ähnliches Problem, und dies mag offensichtlich sein, aber überprüfen Sie Ihre Firewall-Regeln in AWS. Ich habe einen IP-Bereich festgelegt, um Verbindungen von außen einzuschränken. Und die IP in meinem Büro hat sich geändert, sodass sie außerhalb des IP-Bereichs lag. Mein Kollege in einem anderen Büro konnte immer noch eine Verbindung herstellen, daher dachte ich, dass das Problem auf meinem PC liegt, aber das Problem lag bei den Firewall-Regeln in AWS. Hoffe das hilft jemandem :)

0
Asped

In meinem Fall musste das Problem zurück zu einem gültigen Domainnamen oder einer gültigen IP wechseln anstelle eines benutzerdefinierten Hosts lokal behoben werden.

Benutzerdefinierte Hostauflösung schlägt fehl (/etc/hosts)

Ich arbeite mit einem lokalen Host-Auflösungsmechanismus, der Folgendes definiert:

#.#.#.#    my-vm

Aus irgendeinem Grund mit MySQL 5.2.47 Auf Linux Mint 14 (Nadia), ähnlich wie Ubuntu 12.10 (Quantal) the Auflösungsmechanismus funktioniert nicht.

Lösung

Einfach zu einem gemeinfreien Namen wechseln wie my-website.com Lösen Sie das Problem.

0
Édouard Lopez

Hier finden Sie eine Liste der Ressourcen für die Verbindung zu verschiedenen Zielen (Amazon RDS, Amazon EC2, Windows Azure und andere): http://forums.mysql.com/read.php?152,252640,252640#msg -25264 .

0
Mike Lischke