MySQL Workbench з Debian Jessie - TCP / IP через SSH не працює


10

Я використовую для підключення з Windows 7 Pro x64 до мого сервера MySQL, розміщеного на Debian Wheezy з клієнтом MySQL Workbench, використовуючи "TCP / IP через SSH", але це не працює на моєму новому сервері в Debian Jessie, чому?


Конфігурація 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

Я двічі перевіряю IP-адресу / ім’я хоста, ім’я користувача та пароль ...


Конфігурація сервера Debian Wheezy:

root @ debian: ~ # cat / etc / debian_version

7.8

mysql> виберіть версію ();

+------------------+
| 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:

root @ debian: ~ # cat / etc / debian_version

8.0

mysql> виберіть версію ();

+-----------------+
| 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

Отже, різниця ServerKeyBitsміж людиною - між двома файлами sshd_config ...


Помилка MySQL Workbench 6.3.3 подає мені, коли я намагаюся підключитися до сервера Debian Jessie :

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

Файл журналу:

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

Інфо:

Папка "ssh" відсутня в:

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

Правила брандмауера на обох серверах:

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

Я можу з'єднатися з SSH (KiTTY) на обох серверах ...


Я спробував дві різні версії MySQL Workbench:

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

Ці дві версії працюють з Debian Wheezy, але не з Debian Jessie. Що я пропускаю?

Відповіді:


10

Відповідно до https://bugs.mysql.com/bug.php?id=74658, проблема представляє себе при використанні openssh 6.7 бібліотек python, що постачаються з MySql workbench. Додаючи «KexAlgorithms» до роботи з налаштуванням sshd, ви можете оновити бібліотеки python, що постачаються разом з MySql Workbench. Це може бути зручно, якщо у вас немає контролю над конфігурацією sshd ...

Якщо ви прокрутите вниз звіт про помилку, є вказівки щодо завантаження та копіювання бібліотек paramiko та ecdsa.


3
+1. Це правильна відповідь. Зміна дозволених алгоритмів обміну ключами в sshd може впливати на безпеку, тому цього робити не слід. Оновлення бібліотеки клієнтів, як пропонується у цій відповіді, є менш інвазивним та покращує безпеку тунелю ssh.
Крістіан Рудольф

З тією ж проблемою, що виникає з Workbench 6.2 та Debian Jessie. Мій Workbench 6.2 CE сказав мені, що це остання версія в довідці-> Перевірка оновлень. Яка брехня ... Завантажена версія 6.3 з dev.mysql.com/downloads/workbench, і все працює як шарм.
Мартін Сейтл

9

Я знайшов рішення.

Я додав цей рядок до свого /etc/ssh/sshd_configфайлу:

KexAlgorithms curve25519-sha256@libssh.org,ecdh-sha2-nistp256,ecdh-sha2-nistp384,ecdh-sha2-nistp521,diffie-hellman-group-exchange-sha256,diffie-hellman-group14-sha1,diffie-hellman-group1-sha1

і перезапустив ssh: systemctl restart ssh

як запропоновано цим дописом: /programming/26577494/aptana-sftp-key-exchange


7
Це, безумовно, дозволило отримати доступ, але я все ще втомився, що це правильно робити. Перераховано досить багато алгоритмів, будь-яка ідея, яка потрібна для MySQL Workbench?
pcnate

0

Оскільки у відповіді бігмандану є багато для прокрутки, я думаю, що це може мати сенс також розмістити його тут, щоб було легше знайти.

Для Windows це виправлення. [3 червня 2015 15:27] Майк Хадруп також тестувався на Windows 10 64 біт з MySQL Workbench 6.3.3.0 (592) msi та невстановлювався проти Debian 8 Jessie з OpenSSH 6.7

Ви можете використовувати 7zip з http://www.7-zip.org/ для архіву ecdsa-0.13.tar.gz gizpped tar.

Примітка: Пакети Visual C ++, що перерозподіляються для Visual Studio 2013, потрібні для Windows 10 за адресою : https://www.microsoft.com/en-us/download/details.aspx?id=40784

В ОС X скопіюйте бібліотеки paramiko та ecdsa на: /Applications/MySQLWorkbench.app/Contents/Resources/libraries


0

тому що є два способи підключення до mysql. час, коли ви встановлюєте mysql, і в цей час він запитує, в який спосіб ви переходите першим - це Unix sock, який дуже обслуговується і дає хороші показники, а другий - TCP / ip, і, будь ласка, перевірте привілеї, або ви можете підключитися до вас db віддалено просто використовував якийсь інший ip, якщо ні, то ви включаєте функцію безпеки в mysql


1
Інтерфейс Unix-socket для MySQL може використовуватися лише клієнтами на одній машині; це питання стосується клієнта на іншій машині, який повинен використовувати TCP / IP (і необов'язково, як у питанні, SSH).
dave_thompson_085

0

У Linux (і ТОТАЛЬНО сторона вирішення проблеми) я вважав, що простіше / чистіше вручну створити власний тунель ssh для роботи з mysql-workbench:

ssh root @ хост -L 3307: localhost: 3306

Це створює ssh тунель від вашого локального порту 3307 до локального порту віддаленого 3306. Отже, ви просто налаштуєте mysql-workbench для підключення до localhost: 3307 .

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.