MySQL Workbench mit Debian Jessie - TCP / IP über SSH funktioniert nicht

10

Ich verwende eine Verbindung mit Windows 7 Pro x64 zu meinem MySQL-Server, der auf einem Debian Wheezy mit dem MySQL Workbench-Client unter Verwendung von "TCP / IP über SSH" gehostet wird, aber auf meinem neuen Server unter Debian Jessie funktioniert dies nicht. Warum?


MySQL Workbench-Konfiguration:

Connection Name: TEST
Connection Method: Standard TCP/IP over SSH

SSH Hostname: x.x.x.x:22
SSH Username: root
SSH Password: myRootPa$$word
SSH Key File: <NOT-USING-KEYFILE>

MySQL Hostname: 127.0.0.1
MySQL Server Port: 3306
Username: root
Password: myMySQLPa$$word

Ich habe die IP-Adresse / den Hostnamen, den Benutzernamen und das Passwort überprüft ...


Debian Wheezy Serverkonfiguration:

root @ debian: ~ # cat / etc / debian_version

7.8

mysql> select version ();

+------------------+
| version()        |
+------------------+
| 5.5.40-0+wheezy1 |
+------------------+
1 row in set (0.00 sec)

root @ debian: ~ # cat / etc / ssh / sshd_config

Port 22
Protocol 2
HostKey /etc/ssh/ssh_host_rsa_key
HostKey /etc/ssh/ssh_host_dsa_key
HostKey /etc/ssh/ssh_host_ecdsa_key
UsePrivilegeSeparation yes

KeyRegenerationInterval 3600
ServerKeyBits 768
SyslogFacility AUTH
LogLevel INFO
LoginGraceTime 120
PermitRootLogin yes
StrictModes yes
RSAAuthentication yes
PubkeyAuthentication yes

IgnoreRhosts yes
RhostsRSAAuthentication no
HostbasedAuthentication no
PermitEmptyPasswords no
ChallengeResponseAuthentication no

X11Forwarding yes
X11DisplayOffset 10
PrintMotd no
PrintLastLog yes
TCPKeepAlive yes

AcceptEnv LANG LC_*
Subsystem sftp /usr/lib/openssh/sftp-server
UsePAM yes

Debian Jessie Serverkonfiguration:

root @ debian: ~ # cat / etc / debian_version

8.0

mysql> select version ();

+-----------------+
| version()       |
+-----------------+
| 5.5.43-0+deb8u1 |
+-----------------+
1 row in set (0.00 sec)

root @ debian: ~ # cat / etc / ssh / sshd_config

Port 22
Protocol 2
HostKey /etc/ssh/ssh_host_rsa_key
HostKey /etc/ssh/ssh_host_dsa_key
HostKey /etc/ssh/ssh_host_ecdsa_key
HostKey /etc/ssh/ssh_host_ed25519_key
UsePrivilegeSeparation yes

KeyRegenerationInterval 3600
ServerKeyBits 1024
SyslogFacility AUTH
LogLevel INFO
LoginGraceTime 120
PermitRootLogin yes
StrictModes yes
RSAAuthentication yes
PubkeyAuthentication yes

IgnoreRhosts yes
RhostsRSAAuthentication no
HostbasedAuthentication no
PermitEmptyPasswords no
ChallengeResponseAuthentication no

X11Forwarding yes
X11DisplayOffset 10
PrintMotd no
PrintLastLog yes
TCPKeepAlive yes

AcceptEnv LANG LC_*
Subsystem sftp /usr/lib/openssh/sftp-server
UsePAM yes

Der Mann Unterschied ist also der ServerKeyBitszwischen den beiden sshd_config Datei ...


Der Fehler MySQL Workbench 6.3.3 gibt mir, wenn ich versuche, eine Verbindung zum Debian Jessie- Server herzustellen :

Could not connect the SSH Tunnel
Authentication error, unhandled exception caught in tunnel manager, please refer to logs for details

Die Protokolldatei:

10:00:04 [INF][     SSH tunnel]: Starting tunnel
10:00:04 [INF][     SSH tunnel]: Existing SSH tunnel not found, opening new one
10:00:07 [INF][     SSH tunnel]: Opening SSH tunnel to 10.232.50.15:22
10:00:07 [WRN][sshtunnel.py:_connect_ssh:287]: IOError, probably caused by file C:\Users\myUser\AppData\Roaming\MySQL\Workbench\ssh\known_hosts not found, the message was: [Errno 2] No such file or directory: u'C:\\Users\\myUser\\AppData\\Roaming\\MySQL\\Workbench\\ssh\\known_hosts'
10:00:07 [ERR][sshtunnel.py:notify_exception_error:233]: Traceback (most recent call last):
  File "C:\Program Files\MySQL\MySQL Workbench 6.3 CE\sshtunnel.py", line 297, in _connect_ssh
    look_for_keys=has_key, allow_agent=has_key)
  File "C:\Program Files\MySQL\MySQL Workbench 6.3 CE/python/site-packages\paramiko\client.py", line 301, in connect
    t.start_client()
  File "C:\Program Files\MySQL\MySQL Workbench 6.3 CE/python/site-packages\paramiko\transport.py", line 461, in start_client
    raise e
SSHException: Incompatible ssh peer (no acceptable kex algorithm)

10:00:07 [INF][     SSH tunnel]: TunnelManager.wait_connection authentication error: Authentication error, unhandled exception caught in tunnel manager, please refer to logs for details
10:00:07 [ERR][     SSH tunnel]: Authentication error opening SSH tunnel: Authentication error, unhandled exception caught in tunnel manager, please refer to logs for details

Weitere Infos:

Der Ordner "ssh" ist nicht vorhanden in:

C:\Users\myUser\AppData\Roaming\MySQL\Workbench

Firewall-Regeln auf beiden Servern:

root@debian:~# iptables -vnL

Chain INPUT (policy ACCEPT 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination

Chain FORWARD (policy ACCEPT 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination

Chain OUTPUT (policy ACCEPT 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination

Ich kann auf beiden Servern eine Verbindung mit SSH (KiTTY) herstellen ...


Ich habe zwei verschiedene Versionen von MySQL Workbench ausprobiert:

Version 6.3.3.0 build 592 (64 bits)
Version 6.0.9.11421 build 1170 (32 bits)

Diese beiden Versionen funktionieren mit Debian Wheezy, aber nicht mit Debian Jessie. Was vermisse ich?

Nrogara
quelle

Antworten:

10

Laut https://bugs.mysql.com/bug.php?id=74658 tritt das Problem bei Verwendung von openssh 6.7 in den mit MySql Workbench gelieferten Python-Bibliotheken auf. Während das Hinzufügen der "KexAlgorithms" zur sshd-Konfiguration funktioniert, können Sie die mit MySql Workbench gelieferten Python-Bibliotheken aktualisieren. Dies kann nützlich sein, wenn Sie keine Kontrolle über die sshd-Konfiguration haben ...

Wenn Sie im Fehlerbericht nach unten scrollen, finden Sie Anweisungen zum Herunterladen und Kopieren der Bibliotheken paramiko und ecdsa.

Bigmandan
quelle
3
+1. Dies ist die richtige Antwort. Das Ändern der zulässigen Schlüsselaustauschalgorithmen in sshd kann Auswirkungen auf die Sicherheit haben, daher sollte dies nicht durchgeführt werden. Das in dieser Antwort vorgeschlagene Aktualisieren der Clientbibliothek ist weniger invasiv und verbessert die Sicherheit des SSH-Tunnels.
Christian Rudolph
Hat das gleiche Problem mit Workbench 6.2 und Debian Jessie. Meine Workbench 6.2 CE hat mir mitgeteilt, dass es sich um die neueste Version in Hilfe-> Nach Updates suchen handelt. Was für eine Lüge ... Heruntergeladene Version 6.3 von dev.mysql.com/downloads/workbench und alles funktioniert wie ein Zauber.
Martin Seitl
9

Ich habe die Lösung gefunden.

Ich habe diese Zeile zu meiner /etc/ssh/sshd_configDatei hinzugefügt :

KexAlgorithms [email protected],ecdh-sha2-nistp256,ecdh-sha2-nistp384,ecdh-sha2-nistp521,diffie-hellman-group-exchange-sha256,diffie-hellman-group14-sha1,diffie-hellman-group1-sha1

und ssh neu gestartet: systemctl restart ssh

wie in diesem Beitrag vorgeschlagen: /programming/26577494/aptana-sftp-key-exchange

Nrogara
quelle
7
Dies erlaubte sicherlich den Zugang, aber ich bin immer noch müde, dass dies das Richtige ist. Es sind einige Algorithmen aufgelistet. Gibt es eine Idee, die für MySQL Workbench erforderlich ist?
pcnate
0

Da es bei Bigmandans Antwort viel zu scrollen gibt, halte ich es für sinnvoll, sie auch hier zu posten, um sie leichter zu finden.

Für Windows ist dies das Update. [3 Jun 2015 15:27] Mike Hadrup Auch unter Windows 10 64-Bit mit MySQL Workbench 6.3.3.0 (592) msi und noinstall gegen Debian 8 Jessie mit OpenSSH 6.7 getestet

Sie können 7zip von http://www.7-zip.org/ für das gizpped tar-Archiv ecdsa-0.13.tar.gz verwenden.

Hinweis: Visual C ++ Redistributable Packages für Visual Studio 2013 ist unter Windows 10 erforderlich unter: https://www.microsoft.com/en-us/download/details.aspx?id=40784

Kopieren Sie unter OS X die Bibliotheken paramiko und ecdsa nach: /Applications/MySQLWorkbench.app/Contents/Resources/libraries

Karl Henselin
quelle
0

weil es zwei Methoden gibt, um eine Verbindung zu MySQL herzustellen. Die Zeit, in der Sie MySQL installieren, und die Zeit, in der Sie gefragt werden, in welche Richtung Sie gehen möchten, ist Unix-Socke, die sehr gut bedient ist und Ihnen eine gute Leistung bietet. Die zweite ist TCP / IP. Bitte überprüfen Sie die Berechtigungen, die Sie entweder mit Ihrer Datenbank verbinden können Remote verwendet nur eine andere IP, wenn nein, dann Sie und aktivieren Sie die Sicherheitsfunktion in MySQL

lückenhaft
quelle
1
Die Unix-Socket-Schnittstelle zu MySQL kann nur von Clients auf demselben Computer verwendet werden. Diese Frage bezieht sich auf einen Client auf einem anderen Computer, der TCP / IP verwenden muss (und optional, wie in der Frage, SSH).
dave_thompson_085
0

Unter Linux (und um das Problem VOLLSTÄNDIG zu umgehen) fand ich es einfacher / sauberer, manuell einen eigenen SSH-Tunnel zu erstellen, den mysql-workbench verwenden kann:

ssh root @ host -L 3307: localhost: 3306

Dadurch wird ein SSH-Tunnel von Ihrem lokalen Port 3307 zum lokalen Port 3306 der Fernbedienung erstellt. Sie konfigurieren also einfach mysql-workbench für die Verbindung mit localhost: 3307 .

Aaron
quelle