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 ห้องสมุดหลามที่มาพร้อมกับ MySql workbench ในขณะที่เพิ่ม "KexAlgorithms" ลงใน sshd config คุณสามารถปรับปรุงคลัง python ที่มาพร้อมกับ MySql Workbench สิ่งนี้อาจมีประโยชน์หากคุณไม่สามารถควบคุมการตั้งค่า sshd ...

หากคุณเลื่อนลงในรายงานข้อผิดพลาดมีคำแนะนำในการดาวน์โหลดและคัดลอกไลบรารี paramiko และ ecdsa


3
+1 นี่คือคำตอบที่ถูกต้อง การเปลี่ยนอัลกอริทึมการแลกเปลี่ยนคีย์ที่อนุญาตใน sshd อาจมีผลกระทบด้านความปลอดภัยดังนั้นจึงไม่ควรทำเช่นนี้ การอัพเดตไลบรารีไคลเอ็นต์ตามที่แนะนำในคำตอบนี้เป็นการบุกรุกน้อยและปรับปรุงความปลอดภัยของช่องสัญญาณ ssh
Christian Rudolph

หมวกปัญหาเดียวกันกับ Workbench 6.2 และ Debian Jessie My Workbench 6.2 CE บอกฉันว่าเป็นเวอร์ชันล่าสุดในวิธีใช้ -> ตรวจสอบการอัปเดต เป็นเรื่องโกหก ... ดาวน์โหลดเวอร์ชัน 6.3 จากdev.mysql.com/downloads/workbenchและทุกอย่างทำงานได้อย่างมีเสน่ห์
Martin Seitl

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 มิ.ย. 2558 15:27] Mike Hadrup ทดสอบบน Windows 10 64 บิตด้วย MySQL Workbench 6.3.3.0 (592) msi และไม่ติดตั้งกับ Debian 8 Jessie ด้วย OpenSSH 6.7

  • ดาวน์โหลด zip จากhttps://github.com/paramiko/paramikoและ unzip
  • คัดลอก paramiko จาก paramiko-master ไปยัง python / site-packages / (แทนที่ paramiko ที่มีอยู่)
  • ดาวน์โหลด ecdsa-0.13.tar.gz จากhttps://pypi.python.org/pypi/ecdsa#downloadsและ unzip
  • คัดลอก ecdsa จาก ecdsa-0.13 ไปยัง python / site-packages /

คุณสามารถใช้ 7zip ได้จากhttp://www.7-zip.org/สำหรับ ecdsa-0.13.tar.gz gizpped tar archive

หมายเหตุ: แพ็คเกจ Visual C ++ Redistributable สำหรับ Visual Studio 2013 เป็นสิ่งจำเป็นสำหรับ Windows 10 จาก: https://www.microsoft.com/en-us/download/details.aspx?id=40784

บน OS Xให้คัดลอกไลบรารี paramiko และ ecdsa ไปที่: /Applications/MySQLWorkbench.app/Contents/Resources/l ไลบรารี


0

เพราะมีสองวิธีในการเชื่อมต่อกับ mysql เวลาที่คุณติดตั้ง mysql และเวลานั้นถามว่าวิธีไหนที่คุณจะไปอันดับ 1 คือถุงเท้ายูนิกซ์ที่ให้บริการมากและให้ประสิทธิภาพที่ดีและที่สองคือ TCP / IP และโปรดตรวจสอบสิทธิ์อย่างใดอย่างหนึ่งที่คุณสามารถเชื่อมต่อกับคุณได้ db จากระยะไกลเพียงแค่ใช้ ip อื่น ๆ หากไม่เป็นเช่นนั้นคุณและเปิดใช้งานคุณลักษณะด้านความปลอดภัยใน mysql


1
อินเทอร์เฟซ Unix- ซ็อกเก็ตกับ MySQL สามารถใช้งานได้โดยลูกค้าในเครื่องเดียวกันเท่านั้น คำถามนี้เกี่ยวกับไคลเอนต์บนเครื่องอื่นซึ่งจะต้องใช้ TCP / IP (และเป็นทางเลือกเช่นเดียวกับคำถาม SSH)
dave_thompson_085

0

ใน linux (และการหลีกเลี่ยงปัญหาทั้งหมด) ฉันพบว่าง่ายกว่า / สะอาดกว่าในการสร้าง tunnel ssh ของฉันเองเพื่อให้ mysql-workbench ใช้:

ssh root @ host -L 3307: localhost: 3306

นี้จะสร้างอุโมงค์ SSH จากพอร์ตท้องถิ่นของคุณ 3307 กับพอร์ตท้องถิ่นระยะไกล 3306. ดังนั้นคุณเพียงแค่กำหนดค่า MySQL ที่ปรับแต่งเพื่อเชื่อมต่อกับ localhost:

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.