MySQL Workbench avec Debian Jessie - TCP / IP sur SSH ne fonctionne pas

10

J'utilise pour me connecter avec Windows 7 Pro x64 à mon serveur MySQL hébergé sur un Debian Wheezy avec le client MySQL Workbench en utilisant le "TCP / IP sur SSH" mais cela ne fonctionne pas sur mon nouveau serveur sur Debian Jessie, pourquoi?


Configuration de MySQL Workbench:

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

J'ai une double vérification de l'adresse IP / nom d'hôte, nom d'utilisateur et mot de passe ...


Configuration du serveur Debian Wheezy:

root @ debian: ~ # cat / etc / debian_version

7.8

mysql> sélectionnez la 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

Configuration du serveur Debian Jessie:

root @ debian: ~ # cat / etc / debian_version

8.0

mysql> sélectionnez la 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

Donc, la différence homme est ServerKeyBitsentre les deux fichiers sshd_config ...


L'erreur MySQL Workbench 6.3.3 me donne lorsque j'essaie de me connecter au serveur Debian Jessie :

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

Le fichier journal:

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

Plus d'infos:

Le dossier "ssh" n'est pas présent dans:

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

Règles de pare-feu sur les deux serveurs:

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

Je peux me connecter avec SSH (KiTTY) sur les deux serveurs ...


J'ai essayé deux versions différentes de MySQL Workbench:

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

Ces deux versions fonctionnent avec Debian Wheezy mais pas avec Debian Jessie. Qu'est-ce que je rate?

nrogara
la source

Réponses:

10

Selon https://bugs.mysql.com/bug.php?id=74658, le problème se pose lorsque vous utilisez openssh 6.7 les bibliothèques python livrées avec MySql workbench. Tout en ajoutant les "KexAlgorithms" aux travaux de configuration sshd, vous pouvez mettre à jour les bibliothèques python fournies avec MySql Workbench. Cela peut être pratique si vous ne contrôlez pas la configuration sshd ...

Si vous faites défiler vers le bas dans le rapport de bogue, vous trouverez des instructions pour télécharger et copier les bibliothèques paramiko et ecdsa.

bigmandan
la source
3
+1. Ceci est la bonne réponse. La modification des algorithmes d'échange de clés autorisés dans sshd peut avoir des impacts sur la sécurité, donc cela ne devrait pas être fait. La mise à jour de la bibliothèque cliente comme suggéré dans cette réponse est moins invasive et améliore la sécurité du tunnel ssh.
Christian Rudolph
Chapeau le même problème avec Workbench 6.2 et Debian Jessie. Mon Workbench 6.2 CE m'a dit que c'était la dernière version dans Aide-> Rechercher les mises à jour. Quel mensonge ... Téléchargé la version 6.3 sur dev.mysql.com/downloads/workbench et tout fonctionne comme un charme.
Martin Seitl
9

J'ai trouvé la solution.

J'ai ajouté cette ligne à mon /etc/ssh/sshd_configfichier:

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

et redémarré ssh: systemctl restart ssh

comme suggéré par ce post: /programming/26577494/aptana-sftp-key-exchange

nrogara
la source
7
Cela a certainement permis l'accès, mais je suis toujours las que ce soit la bonne chose à faire. Il y a pas mal d'algorithmes répertoriés, une idée qui est requise pour MySQL Workbench?
pcnate
0

Puisqu'il y a beaucoup à faire défiler sur la réponse de bigmandan, je pense qu'il pourrait être judicieux de le poster ici pour le rendre plus facile à trouver.

Pour Windows , c'est le correctif. [3 juin 2015 15:27] Mike Hadrup Également testé sur Windows 10 64 bits avec MySQL Workbench 6.3.3.0 (592) msi et noinstall contre Debian 8 Jessie avec OpenSSH 6.7

Vous pouvez utiliser 7zip depuis http://www.7-zip.org/ pour l'archive tar tarée ecdsa-0.13.tar.gz.

Remarque: les packages redistribuables Visual C ++ pour Visual Studio 2013 sont requis sur Windows 10 à partir de: https://www.microsoft.com/en-us/download/details.aspx?id=40784

Sous OS X , copiez les bibliothèques paramiko et ecdsa dans: /Applications/MySQLWorkbench.app/Contents/Resources/libraries

Karl Henselin
la source
0

car il existe deux méthodes pour se connecter à mysql. le moment où vous installez mysql et ce moment-là, il vous demande dans quelle direction vous allez 1ère est la chaussette unix qui est très servie et vous donne de bonnes performances et la 2ème est TCP / ip et veuillez vérifier les privilèges soit vous pouvez vous connecter à votre db à distance juste utilisé un autre ip si non alors vous et activez la fonction de sécurité dans mysql

inégal
la source
1
L'interface Unix-socket vers MySQL n'est utilisable que par les clients sur la même machine; cette question concerne un client sur une machine différente qui doit utiliser TCP / IP (et éventuellement, comme dans la question, SSH).
dave_thompson_085
0

Sous Linux (et en évitant TOTALEMENT le problème), j'ai trouvé plus simple / plus propre de créer manuellement mon propre tunnel ssh pour mysql-workbench à utiliser:

ssh root @ host -L 3307: localhost: 3306

Cela crée un tunnel ssh depuis votre port local 3307 vers le port local distant de 3306. Il vous suffit donc de configurer mysql-workbench pour se connecter à localhost: 3307 .

Aaron
la source