MySQL Workbench dengan Debian Jessie - TCP / IP over SSH tidak berfungsi

10

Saya menggunakan untuk terhubung dengan Windows 7 Pro x64 ke server MySQL saya yang di-host pada Debian Wheezy dengan klien MySQL Workbench menggunakan "TCP / IP over SSH" tetapi tidak bekerja pada server baru saya di Debian Jessie, mengapa?


Konfigurasi 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

Saya sudah mengecek alamat IP / nama host, nama pengguna dan kata sandi ...


Konfigurasi server Debian Wheezy:

root @ debian: ~ # cat / etc / debian_version

7.8

mysql> pilih versi ();

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

Konfigurasi server Debian Jessie:

root @ debian: ~ # cat / etc / debian_version

8.0

mysql> pilih versi ();

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

Jadi perbedaan pria adalah ServerKeyBitsantara dua file sshd_config ...


Kesalahan yang diberikan MySQL Workbench 6.3.3 ketika saya mencoba terhubung ke server Debian Jessie :

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

File log:

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

Lebih banyak info:

Folder "ssh" tidak ada di:

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

Aturan firewall di kedua server:

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

Saya dapat terhubung dengan SSH (KiTTY) di kedua server ...


Saya telah mencoba dua versi berbeda dari MySQL Workbench:

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

Kedua versi ini bekerja dengan Debian Wheezy tetapi tidak dengan Debian Jessie. Apa yang saya lewatkan?

ngarai
sumber

Jawaban:

10

Menurut https://bugs.mysql.com/bug.php?id=74658 masalah ini muncul dengan sendirinya ketika menggunakan openssh 6.7 pustaka python yang dikirimkan dengan meja kerja MySql. Saat menambahkan "KexAlgorithms" ke sshd config works, Anda dapat memperbarui pustaka python yang datang dengan MySql Workbench. Ini mungkin berguna jika Anda tidak memiliki kendali atas konfigurasi sshd ...

Jika Anda gulir ke bawah dalam laporan bug, ada instruksi untuk mengunduh dan menyalin pustaka paramiko dan ecdsa.

bigmandan
sumber
3
+1. Ini jawaban yang benar. Mengubah algoritma pertukaran kunci yang diizinkan dalam sshd dapat memiliki dampak keamanan sehingga hal ini tidak boleh dilakukan. Memperbarui perpustakaan klien seperti yang disarankan dalam jawaban ini kurang invasif dan meningkatkan keamanan terowongan ssh.
Christian Rudolph
Hat masalah yang sama dengan Workbench 6.2 dan Debian Jessie. Meja Kerja Saya 6.2 CE memberi tahu saya bahwa itu adalah versi terbaru dalam Bantuan-> Periksa Pembaruan. Betapa bohong ... Mengunduh Versi 6.3 dari dev.mysql.com/downloads/workbench dan semuanya berfungsi seperti pesona.
Martin Seitl
9

Saya telah menemukan solusinya.

Saya menambahkan baris ini ke /etc/ssh/sshd_configfile saya :

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

dan memulai kembali ssh: systemctl restart ssh

seperti yang disarankan oleh posting ini: /programming/26577494/aptana-sftp-key-exchange

ngarai
sumber
7
Ini tentu saja memungkinkan akses tetapi saya masih lelah bahwa ini adalah hal yang benar untuk dilakukan. Ada beberapa Algoritma yang terdaftar, ada ide yang diperlukan untuk MySQL Workbench?
pcnate
0

Karena ada banyak yang bisa digulirkan pada jawaban bigmandan, saya pikir mungkin masuk akal juga untuk mempostingnya di sini untuk membuatnya lebih mudah ditemukan.

Untuk Windows , ini adalah perbaikannya. [3 Jun 2015 15:27] Mike Hadrup Juga diuji pada Windows 10 64 bit dengan MySQL Workbench 6.3.3.0 (592) msi dan noinstall terhadap Debian 8 Jessie dengan OpenSSH 6.7

Anda dapat menggunakan 7zip dari http://www.7-zip.org/ untuk arsip tar gizpped ecdsa-0.13.tar.gz.

Catatan: Paket Visual C ++ Redistributable untuk Visual Studio 2013 diperlukan di Windows 10 dari: https://www.microsoft.com/en-us/download/details.aspx?id=40784

Pada OS X , salin pustaka paramiko dan ecdsa ke: /Applications/MySQLWorkbench.app/Contents/Resources/libraries

Karl Henselin
sumber
0

karena ada dua metode untuk terhubung ke mysql. waktu ketika Anda menginstal mysql dan waktu itu bertanya ke arah mana Anda ingin pergi 1 adalah unix sock yang sangat dilayani dan memberi Anda kinerja yang baik dan yang ke-2 adalah TCP / ip dan silakan periksa hak-haknya baik Anda dapat terhubung dengan Anda db jarak jauh hanya menggunakan beberapa ip lain jika tidak ada maka Anda dan memungkinkan untuk fitur keamanan di mysql

tambal sulam
sumber
1
Antarmuka Unix-socket ke MySQL hanya dapat digunakan oleh klien pada mesin yang sama; pertanyaan ini adalah tentang klien pada mesin yang berbeda yang harus menggunakan TCP / IP (dan opsional, seperti dalam pertanyaan, SSH).
dave_thompson_085
0

Di linux (dan BENAR-BENAR menghindari masalah), saya merasa lebih mudah / bersih untuk secara manual membuat ssh tunnel saya sendiri untuk menggunakan mysql-workbench:

ssh root @ host -L 3307: localhost: 3306

Ini menciptakan ssh tunnel dari port lokal 3307 Anda ke port lokal remote 3306. Jadi, Anda cukup mengonfigurasi mysql-workbench untuk tersambung ke localhost: 3307 .

Harun
sumber