
Ich stelle unter Windows 7 Pro x64 mit dem MySQL Workbench-Client über „TCP/IP über SSH“ eine Verbindung zu meinem MySQL-Server her, der auf einem Debian Wheezy gehostet wird. Auf meinem neuen Server mit Debian Jessie funktioniert dies jedoch 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 IP-Adresse/Hostnamen, Benutzernamen und Passwort noch einmal überprüft …
Debian Wheezy-Serverkonfiguration:
root@debian:~# cat /etc/debian_version
7.8
mysql> Version auswählen();
+------------------+
| 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> Version auswählen();
+-----------------+
| 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 Hauptunterschied besteht also ServerKeyBits
zwischen den beiden sshd_config-Dateien ...
Der Fehler MySQL Workbench 6.3.3 gibt mir, wenn ich versuche, eine Verbindung zumDebian JessieServer:
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 mit SSH (KiTTY) auf beiden Servern eine Verbindung 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?
Antwort1
Entsprechendhttps://bugs.mysql.com/bug.php?id=74658Das Problem tritt auf, wenn Sie OpenSSH 6.7 verwenden und die Python-Bibliotheken verwenden, die mit MySql Workbench geliefert werden. Während das Hinzufügen der „KexAlgorithms“ zur SSHD-Konfiguration funktioniert, können Sie die Python-Bibliotheken aktualisieren, die mit MySql Workbench geliefert werden. Dies kann praktisch 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 Paramiko- und ECDSA-Bibliotheken.
Antwort2
Ich habe die Lösung gefunden.
Ich habe meiner /etc/ssh/sshd_config
Datei diese Zeile 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: https://stackoverflow.com/questions/26577494/aptana-sftp-key-exchange
Antwort3
Da man bei Bigmandans Antwort viel durchblättern muss, halte ich es für sinnvoll, sie auch hier zu posten, damit sie leichter zu finden ist.
Für Windows, das ist die Lösung. [3 Jun 2015 15:27] Mike Hadrup Auch getestet unter Windows 10 64 bit mit MySQL Workbench 6.3.3.0 (592) msi und noinstall gegen Debian 8 Jessie mit OpenSSH 6.7
- zip herunterladen vonhttps://github.com/paramiko/paramikound entpacken
- Paramiko von Paramiko-Master nach Python/Site-Packages/ kopieren (vorhandenes Paramiko ersetzen)
- Laden Sie ecdsa-0.13.tar.gz herunter vonhttps://pypi.python.org/pypi/ecdsa#downloadsund entpacken
- ecdsa von ecdsa-0.13 nach python/site-packages/ kopieren
Sie können 7zip verwenden vonhttp://www.7-zip.org/für das gizpped Tar-Archiv ecdsa-0.13.tar.gz.
Hinweis: Visual C++ Redistributable Packages für Visual Studio 2013 werden unter Windows 10 benötigt von:https://www.microsoft.com/en-us/download/details.aspx?id=40784
Unter OS X, kopieren Sie die Paramiko- und ECDSA-Bibliotheken nach: /Applications/MySQLWorkbench.app/Contents/Resources/libraries
Antwort4
Unter Linux (und um das Problem VOLLSTÄNDIG zu umgehen) fand ich es einfacher/sauberer, manuell meinen eigenen SSH-Tunnel für die Verwendung durch MySQL-Workbench zu erstellen:
ssh root@host -L 3307:localhost:3306
Dadurch wird ein SSH-Tunnel von Ihrem lokalen Port 3307 zum lokalen Port 3306 der Remote-Verbindung erstellt.Sie konfigurieren mysql-workbench einfach für die Verbindung mit localhost:3307.