Không thể kết nối với cơ sở dữ liệu MySQL qua SSH bằng Workbench


10

Tôi đang cố gắng kết nối với cơ sở dữ liệu của mình thông qua SSH đường hầm từ một trong các máy chủ ứng dụng web của chúng tôi với MySQL Workbench. Đây là cấu hình cơ bản; lưu ý rằng tôi đã thay đổi một số giá trị trong ảnh chụp màn hình vì lý do bảo mật.

Ảnh chụp màn hình bàn làm việc

Vấn đề là mỗi lần tôi cố gắng kết nối qua một đường hầm SSH từ một trong các máy chủ ứng dụng của chúng tôi, tôi gặp phải lỗi sau:

Không thể kết nối với us-east-1.amazonaws.com thông qua đường hầm SSH tại computer.amazonaws.com với người dùng social_shop_prod. Không thể kết nối với máy chủ MySQL trên 127.0.0.1.

Tuy nhiên, nếu tôi sử dụng cùng thông tin đăng nhập qua SSH thông qua dòng lệnh sau:

mysql -u social_shop_prod -h us-east-1.amazonaws.com -p

Tôi có thể kết nối thành công và nhận được dấu nhắc lệnh tương tác MySQL.

Đã nói chuyện với phần còn lại của nhóm phát triển của tôi ở đây và không ai trong chúng tôi có thể hiểu tại sao tôi không thể truy cập SSH từ các máy chủ ứng dụng của chúng tôi với Workbench; nhưng khi tôi SSH đến một trong các máy chủ ứng dụng của chúng tôi và kết nối với MySQL thông qua dòng lệnh; Tôi có thể kết nối thành công.

Và tại sao nó lại cố gắng kết nối hơn 127.0.0.1? Tôi đã không xác định rằng trong cấu hình; tập tin máy chủ của tôi cũng không chuyển hướng các tên miền được hiển thị bên dưới tới IP đó.

Bất kỳ đầu vào xây dựng được đánh giá rất cao.

Câu trả lời:


5

Vì bạn đang kết nối thông qua một đường hầm SSH, điều này có nghĩa là cổng MySQL 3306 từ us-east-1.amazonaws.com đang được mở cục bộ trên máy tính của bạn. Địa chỉ IP của máy tính của bạn là 127.0.0.1 hoặc localhost. Khi bạn kết nối với máy chủ mysql trên us-east-1.amazonaws.com, bạn thực sự đang truy cập nó qua 127.0.0.1, tức là máy tính của bạn. Nếu bạn có một đường hầm khác mở hoặc MySQL chạy cục bộ trên máy tính của bạn, thì có thể máy chủ MySQL khác đang từ chối các nỗ lực xác thực của bạn

Có một số thử nghiệm bạn có thể thử:

1. Bạn đang nghe máy tính trên cổng nào

Từ một dấu nhắc lệnh: netstat -a (liệt kê tất cả các cổng đang mở)

Trong linux nó sẽ là: netstat -tlpn

2. Kiểm tra kết nối cơ bản

Từ dấu nhắc lệnh của DOS hoặc bảng điều khiển linux: telnet 127.0.0.1 3306

Nếu bạn hết thời gian hoặc một số chương trình khác phản hồi thì đường hầm của bạn không được thiết lập chính xác.

3. Thay đổi số cổng mà MySQL Workbench đang mở cục bộ

Chúng tôi giả định rằng bàn làm việc của MySQL đang tạo đường hầm trên máy tính của bạn. Nếu vậy, trong bàn làm việc của MySQL, hãy thử tạo đường hầm thông qua một số cổng khác như 9000.

Đảm bảo rằng 9000 không được liệt kê là một cổng mở từ: netstat -a

Nếu bạn có quyền truy cập ssh vào us-east-1.amazonaws.com

4. Thử kết nối với MySQL từ us-east-1.amazonaws.com

mysql -u myuser -h 127.0.0.1 -p

Và như Rolando đã nói, bạn sẽ muốn xác minh rằng bạn đang kết nối với thông tin xác thực phù hợp. Ví dụ: nếu bạn đang kết nối với tên myuser@127.0.0.1 và bạn có người dùng myuser mà không có máy chủ, có lẽ bạn sẽ không thể kết nối bằng user@127.0.0.1.


2

Lý do 127.0.0.1 đang được liên lạc là do đường hầm kết nối một cổng trên máy cục bộ của bạn với máy chủ từ xa. Thông báo dường như gợi ý rằng kết nối SSH không được thực hiện.

Hãy thử điều này từ dòng lệnh:

ssh -L 33000:remotehost:3306 user@remotehost

Đảm bảo rằng SSH đang cho phép các cổng chuyển tiếp; nếu bạn nhận được một thông báo nói rằng chuyển tiếp không được phép hoặc bị từ chối, thì đó là lý do.

Để khắc phục điều này, bạn phải thay đổi cấu hình máy chủ; thêm cấu hình này vào máy chủ SSH:

AllowTcpForwarding yes

Đừng quên khởi động lại máy chủ để kích hoạt cấu hình này.


bạn có thể giải thích lệnh đó một chút không? bạn đang ràng buộc địa chỉ? Điều đó có thể được kết hợp với các lệnh mysql không?
Thufir 23/2/2015

Với SSH ở đây bạn đang thiết lập một đường hầm, không có gì hơn. Nó kết nối một cổng từ xa với một cổng cục bộ. Những gì bạn làm trong trường hợp này là buộc một cổng cục bộ vào cổng MySQL từ xa.
Mei

1

Tôi đã tiếp tục xử lý vấn đề này trong gần 2 tuần nay tôi đã quản lý để thiết lập nó. Tôi sẽ đăng nó ở đây để nhiều người có thể thử nó.

Ok, tôi đang sử dụng OpenSSH (bản gốc Win10) và Workbench 8.

Từng bước:
1. Thêm khóa máy chủ SSH của bạn vào tác nhân bằng ssh-add.
2. Tạo các cặp khóa bằng ssh-keygen. Trong trường hợp của tôi, các tệp này tự động chuyển sang cấu hình Users/myUser/.sshcài đặt.
3. Thêm khóa chung vào tệp ủy quyền (phải nằm trong đường dẫn cài đặt máy chủ của bạn, trong trường hợp của tôi Windows/System32/OpenSSH/.ssh) không có phần mở rộng.
4. Thêm các khóa được tạo mà bạn vừa thực hiện cho tác nhân bằng ssh-add.

Các bước ở trên có khá nhiều cấu hình của một dòng lệnh SSH Server mà tôi nghĩ rằng OP đã làm cho kết nối của anh ấy đang hoạt động thông qua thiết bị đầu cuối. Để cấu hình MySQL Workbench 8, bạn thực hiện tương tự chính xác ngoại trừ bạn phải chuyển đổi private_key.pem sang định dạng OpenSSH trước khi chuyển chúng sang Users/myUser/.sshOpenSSH_instalation_path/.ssh

  1. Chuyển đổi private_key.pem sang định dạng OpenSSH bằng PUTTYgen.
  2. Sao chép trường "Khóa công khai để dán vào trường OpenSSH ủy quyền" .
  3. Lưu khóa công khai trong các thư mục User/myUser/.sshOpenSSH_instalation_path/.ssh
  4. Dán khóa bạn đã sao chép từ PUTTY vào tệp ủy quyền tại OpenSSH_instalation_path/.sshthư mục.
  5. Xuất khóa định dạng OpenSSH sang User/myUser/.ssh.
  6. Khởi động lại dịch vụ sshd và mysql
  7. Định cấu hình Bàn làm việc để kết nối với Máy chủ SSH bằng khóa riêng được chuyển đổi.

CẬP NHẬT: Bạn sẽ cần thiết lập các mục sau trong tệp sshd_config của mình:

PermitRootLogin không có mật khẩu
PubkeyAuthentication yes
PasswordAuthentication no
PermitEmptyPasswords no
AllowTcpForwarding yes

XIN VUI LÒNG ĐỌC:

Tôi là một nhà phân tích thiếu kinh nghiệm, vì vậy nếu người dùng cao cấp hơn biết thư mục nào trong hai thư mục .ssh là đúng, vui lòng cho chúng tôi biết. Tôi thấy OpenSSH hơi mơ hồ về điều này.
Điều này làm việc cho tôi trong khi thiết lập môi trường phát triển cục bộ chỉ sử dụng localhost. Chỉ dành cho mục đích học tập.
Bạn có thể muốn thêm myUser @ localhost vào người dùng MySQL Workbench trước khi kiểm tra kết nối.
Nếu thực sự cần thiết tôi có thể thêm hình ảnh.


0

Trong trường hợp của tôi, sự cố tôi phải chuyển về tên miền hoặc IP hợp lệ thay vì máy chủ lưu trữ tùy chỉnh được lưu trữ cục bộ.

Độ phân giải máy chủ tùy chỉnh không thành công ( /etc/hosts)

Tôi làm việc với một cơ chế phân giải máy chủ cục bộ xác định:

#.#.#.#    my-vm

Đối với một số lý do có MySQL 5.2.47trên Linux Mint 14 (Nadia)đó cũng tương tự như Ubuntu 12.10 (Quantal)các cơ chế giải quyết không làm việc .

Giải pháp

Đơn giản chỉ cần chuyển sang một tên miền công cộng như my-website.comgiải quyết vấn đề.


@ Đã sửa, thanj = ks
Édouard Lopez


0

Tôi đã có một vấn đề tương tự, và điều này có thể gây khó chịu, nhưng hãy kiểm tra các quy tắc tường lửa trong AWS. Tôi có một bộ IP, để hạn chế kết nối từ thế giới bên ngoài. Và IP tại văn phòng của tôi đã thay đổi, vì vậy nó nằm ngoài phạm vi IP. Đồng nghiệp của tôi ở một quốc gia khác vẫn có thể kết nối, vì vậy tôi nghĩ vấn đề là ở PC của tôi, nhưng vấn đề là ở quy tắc tường lửa trong AWS. Mong rằng sẽ giúp được ai đó :)

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.