MySQL Workbench z Debian Jessie - TCP / IP przez SSH nie działa

10

Używam do łączenia się z Windows 7 Pro x64 z moim serwerem MySQL hostowanym na Debian Wheezy z klientem MySQL Workbench za pomocą „TCP / IP przez SSH”, ale to nie działa na moim nowym serwerze na Debian Jessie, dlaczego?


Konfiguracja 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

Mam dokładnie sprawdzić adres IP / nazwę hosta, nazwę użytkownika i hasło ...


Konfiguracja serwera Debian Wheezy:

root @ debian: ~ # cat / etc / debian_version

7.8

mysql> wybierz wersję ();

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

Konfiguracja serwera Debian Jessie:

root @ debian: ~ # cat / etc / debian_version

8.0

mysql> wybierz wersję ();

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

Różnica ServerKeyBitsmiędzy ludźmi polega na tym, że między dwoma plikami sshd_config ...


Błąd MySQL Workbench 6.3.3 pojawia się, gdy próbuję połączyć się z serwerem Debian Jessie :

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

Plik dziennika:

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

Więcej informacji:

Folder „ssh” nie jest obecny w:

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

Reguły zapory na obu serwerach:

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

Mogę połączyć się z SSH (KiTTY) na obu serwerach ...


Wypróbowałem dwie różne wersje MySQL Workbench:

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

Te dwie wersje działają z Debian Wheezy, ale nie z Debian Jessie. czego mi brakuje?

nrogara
źródło

Odpowiedzi:

10

Według https://bugs.mysql.com/bug.php?id=74658 problem pojawia się podczas korzystania z openssh 6.7 w bibliotekach Python dostarczanych ze środowiskiem roboczym MySql. Podczas dodawania „KexAl algorytmów” do konfiguracji sshd działa, możesz zaktualizować biblioteki python, które są dostarczane z MySql Workbench. Może to być przydatne, jeśli nie masz kontroli nad konfiguracją sshd ...

Jeśli przewiniesz w dół raport o błędzie, znajdziesz instrukcje pobierania i kopiowania bibliotek paramiko i ecdsa.

bigmandan
źródło
3
+1. To jest poprawna odpowiedź. Zmiana dozwolonych algorytmów wymiany kluczy w sshd może mieć wpływ na bezpieczeństwo, więc nie należy tego robić. Aktualizacja biblioteki klienta zgodnie z sugestią zawartą w tej odpowiedzi jest mniej inwazyjna i poprawia bezpieczeństwo tunelu ssh.
Christian Rudolph
Rozwiąż ten sam problem z Workbench 6.2 i Debian Jessie. Mój Workbench 6.2 CE powiedział mi, że jest to najnowsza wersja w Pomoc-> Sprawdź dostępność aktualizacji. Co za kłamstwo ... Pobrano wersję 6.3 z dev.mysql.com/downloads/workbench i wszystko działa jak urok.
Martin Seitl
9

Znalazłem rozwiązanie.

Dodałem tę linię do mojego /etc/ssh/sshd_configpliku:

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

i zrestartowałem ssh: systemctl restart ssh

zgodnie z sugestią tego posta: /programming/26577494/aptana-sftp-key-exchange

nrogara
źródło
7
To z pewnością pozwoliło na dostęp, ale nadal jestem zmęczony, że to jest właściwe. Istnieje kilka algorytmów wymienionych, jakiś pomysł, który jest wymagany dla MySQL Workbench?
pcnate
0

Ponieważ odpowiedzi bigmandana można przewijać wiele, myślę, że warto opublikować ją tutaj, aby ułatwić jej znalezienie.

W przypadku systemu Windows jest to poprawka. [3 czerwca 2015 15:27] Mike Hadrup Przetestowano również w systemie Windows 10 64-bitowym z MySQL Workbench 6.3.3.0 (592) msi i noinstall przeciwko Debian 8 Jessie z OpenSSH 6.7

Możesz użyć 7zip z http://www.7-zip.org/ dla archiwum tar z wykrytym ecdsa-0.13.tar.gz.

Uwaga: Pakiety redystrybucyjne Visual C ++ dla Visual Studio 2013 są wymagane w systemie Windows 10 od: https://www.microsoft.com/en-us/download/details.aspx?id=40784

W systemie OS X skopiuj biblioteki paramiko i ecdsa do: /Applications/MySQLWorkbench.app/Contents/Resources/libraries

Karl Henselin
źródło
0

ponieważ istnieją dwie metody połączenia z mysql. czas, kiedy instalujesz mysql, a tym razem pyta Cię, w którą stronę chcesz iść 1. to skarpeta unix, która jest bardzo obsługiwana i daje dobrą wydajność, a druga to TCP / ip i proszę sprawdź uprawnienia albo możesz połączyć się z tobą db zdalnie użyłem innego adresu IP, jeśli nie, a następnie włącz funkcję bezpieczeństwa w mysql

niejednolity
źródło
1
Interfejs Unix-gniazdo MySQL jest używany tylko przez klientów na tym samym komputerze; to pytanie dotyczy klienta na innym komputerze, który musi używać protokołu TCP / IP (i opcjonalnie, jak w pytaniu, SSH).
dave_thompson_085
0

W Linuksie (i CAŁKOWICIE pomijanie problemu), znalazłem prostsze / czystsze ręczne utworzenie własnego tunelu ssh dla mysql-workbench do użycia:

ssh root @ host -L 3307: localhost: 3306

Spowoduje to utworzenie tunelu ssh z lokalnego portu 3307 do lokalnego portu zdalnego 3306. Tak więc wystarczy skonfigurować mysql-workbench, aby połączyć się z localhost: 3307 .

Aaron
źródło