Đường hầm SSH thông qua MySQL Workbench


8

máy chủ sản xuất mới của tôi chỉ hiển thị qua đường hầm đôi ssh. Tôi có thể truy cập targethost qua bảng điều khiển 14.04 của Ubuntu chỉ bằng cách thực thi lệnh ssh targetHostvà hơn là thực thi mysql cli trên máy từ xa nhưng tôi muốn truy cập MySQL db qua gui Workbench. Làm cách nào để định cấu hình kết nối trong Workbench để đạt được nó?

.Ssh / config của tôi :

Host targetHost,  firewallHost
    User username
    IdentityFile /home/michalszulc/.ssh/id_rsa

Host targetHost
    proxycommand ssh -W %h:%p firewallHost

Host firewallHost
    hostname firewallHost.example.com
    port 2201
    passwordauthentication no
    controlmaster auto
    controlpath ~/

Host targetHost
    Hostname 123.123.123.123

Câu trả lời:


4

Quá trình này đơn giản. Tạo kết nối mới và chọn phương thức kết nối TCP / IP tiêu chuẩn qua SSH. Các giá trị cho máy chủ SSH cung cấp đường hầm:

  • Tên máy chủ SSH: địa chỉ của máy chủ tạo đường hầm SSH (máy chủ SSH và MySQL có thể là cùng một máy chủ hoặc cùng một địa chỉ mạng, điều này sẽ phụ thuộc vào cấu hình).
  • Tên người dùng SSH: tên người dùng trong máy chủ SSH.
  • Mật khẩu SSH: Mật khẩu người dùng trong máy chủ SSH (nếu được định cấu hình xác thực mật khẩu chế độ).
  • Tệp khóa SSH: Một tệp chứa khóa riêng để xác thực trên máy chủ nếu bạn đã bật PasswordAuthenticationchính sách trên máy chủ SSH có giá trị no).

Giá trị cho kết nối với DBMS MySQL.

  • Tên máy chủ MySQL: Địa chỉ của máy chủ lưu trữ mà MySQL đang chạy dịch vụ, liên quan đến máy chủ SSH. Nếu dịch vụ SSH và MySQL đang chạy trên cùng một máy chủ, giá trị hướng đông là localhost hoặc 127.0.0.1, vì một khi kết nối qua đường hầm được thiết lập, dịch vụ MySQL sẽ lắng nghe các yêu cầu từ localhost (tùy thuộc vào giá trị được đặt trong lệnh bind_adressMySQL).
  • Cổng máy chủ MySQL: cổng kết nối MySQL, tổng quát là 3306.
  • Tên người dùng MySQL: Tên người dùng sẽ kết nối với MySQL, nghĩa là nó phải là người dùng hợp lệ của MySQL và được phép kết nối từ đường hầm.
  • Lược đồ mặc định: Tương đương với SQL USE.

Tôi vẫn bị mắc kẹt. Ví dụ: máy chủ đường hầm của tôi là firewallhostvà máy chủ lưu trữ với db là targethost. db chỉ có sẵn từ localhost từ targethost(nên thiết lập kết nối ssh với targethostđầu tiên). Với cấu hình của bạn, nó cố gắng thiết lập kết nối với db firewallhostvà rõ ràng là không ổn.
Michal_Szulc

thử: ssh -L 33000: targethost: 3306 người dùng @ targethost
malyy

1

Không rõ ràng, nếu chúng tôi nhận được thiết lập của bạn chính xác. Vì vậy, tôi giả sử firewallhostlà máy chủ có thể truy cập từ Bàn làm việc của bạn. Vì vậy, cần phải tạo một cổng mở trên máy chủ này, có thể truy cập Máy chủ mysql 'thực' đằng sau tường lửa này.

Điều đó là khá ok, nếu bạn thiết lập một đường hầm ssh liên tục trên firewallhost. Điều đó được thực hiện như thế này trênfirewallhost

ssh -L localhost:33060:localhost:3306 someshelluser@databasehost

Điều này tạo ra một đường hầm openssh cho localhost (không công khai trên bất kỳ nic nào) trên cổng 33060 (hoặc bất kỳ cổng nào bạn có miễn phí tại đây) firewallhost, kết nối lại được kết nối qua đường hầm này với cổng 3306 (một lần nữa trên localhost nhưng trên máy databasehost) vì nó được kết nối như someshelluser trên databasehost.

Và bây giờ bạn có thể kết nối với bàn làm việc:

  • Tên máy chủ SSH: firewallhost
  • Tên người dùng SSH: một số người dùng hợp lệ trên firewallhost
  • Mật khẩu SSH: thẻ của bạn cho một số người dùng hợp lệ
  • SSH Key File: thay thế một keyfile

  • Tên máy chủ MySQL: localhost(khi chúng tôi mở một đường hầm trên firewallhostlocalhost)

  • Cổng máy chủ MySQL: 33060
  • Tên người dùng MySQL: người dùng mysql của bạn

Để có đường hầm ssh firewallhostliên tục, bạn có thể bắt đầu nó ở đó như cách sau với một keyfile (để truy cập databasehost) và một màn hình thông qua quy trình tách rời. Điều này có thể được đưa vào RC.local của bạn hoặc bất cứ điều gì bạn sử dụng trên firewallhost.

screen -d -m /usr/bin/ssh -v -o "StrictHostKeyChecking=no" -o "UserKnownHostsFile=/dev/null" -o "BatchMode=yes" -i /your/.ssh/ssh_host_dsa_key -q -L locahost:33060:localhost:3306 someshelluser@databasehost

Bạn chỉ cần 'tưởng tượng' rằng một đường hầm ssh như vậy có thể 'vận chuyển' bất kỳ luồng cổng nào từ máy này sang máy khác bằng cách mở một cổng 'mới' trên máy bạn tạo đường hầm ssh đó (tại đây firewallhost). Điều này thậm chí có thể được thực hiện trên mạng công cộng firewallhost, nhưng bạn muốn nó trên localhost vì bạn không muốn phơi bày cổng mysql của mình ra công chúng;)

CẬP NHẬT:

Ok, vì bạn không có quyền truy cập trực tiếp để firewallhosttạo một đường hầm liên tục, hãy thử một cách khác. Bạn nói rằng bạn có thể kết nối với proxycommand. Khi bạn viết nội tuyến và không phải là tùy chọn '-o', tôi giả sử bạn có cái này trong ssh_config.

Nếu ssh_config của bạn trông như thế này:

Host server
    Hostname mysqlserver.example.org
    ProxyCommand ssh -W %h:%p firewallhost.example.org

Sau đó, bạn có thể thử như sau ' Tên máy chủ SSH ' trong bàn làm việc. Nếu có cơ hội, bạn được phép đưa thông số ssh với nó. Tôi đã không kiểm tra nó, nhưng nó không phải là bất thường khi ứng dụng chuyển nội dung của các trường Tên máy chủ ngay vào cuộc gọi ssh.

Tên máy chủ SSH:

-o ProxyCommand="ssh -W %h:%p firewallhost.example.org" mysqlserver.example.org

Điều này sẽ đưa bạn lên mysqlserver thông qua tường lửa của bạn. Từ đây, cài đặt mysql của bạn có thể được sử dụng như thể bạn sẽ kết nối trực tiếp với mysqlserver như bàn làm việc đang mong đợi.

CẬP NHẬT2:

Như bạn đã viết, bạn đang ở trên cùng một máy (Ubuntu 14) có khả năng kết nối với cơ sở dữ liệu mysql của bạn phía sau firewallhost, bạn chỉ nên sử dụng các giá trị trong bàn làm việc mà bạn sử dụng trên bàn điều khiển. Bàn làm việc sẽ sử dụng .ssh / config của bạn nếu bạn gọi bàn làm việc với cùng một người dùng mà .ssh / config dành cho.

Cuối cùng:

Tên máy chủ SSH sẽ chỉ là 'targethost' trong đó proxycommand từ .ssh / config của bạn sẽ chuyển bạn đến 'targethost' thông qua 'tường lửa'. Tên người dùng SSH là 'tên người dùng' (từ .ssh / config lần nữa).

Tên máy chủ MySQL phải là localhost và cổng 3306 - giống hệt như bạn làm khi truy cập 'targethost' bởi ssh như bạn đã viết trong câu hỏi của mình. Bởi vì bàn làm việc sẽ sử dụng các giá trị này sau (!), Nó kết nối bằng ssh.


Tôi không thể thay đổi bất cứ điều gì trên firewallhost. Đó là lý do tại sao tôi đã cung cấp proxycommand mà tôi đã thu được từ sysadmin. Tôi đang tìm giải pháp từ localhost của mình mà không can thiệp proxy và máy chủ đích.
Michal_Szulc

Ok, sau đó vui lòng cung cấp thêm infos: - nc có được cài đặt firewallhostkhông? - Vì '-o ProxyCommand' là một Tùy chọn ssh và không phải là một lệnh thực sự, vui lòng cung cấp chính xác cách bạn tiếp cận mysql của mình bằng bảng điều khiển Ubuntu, như bạn đã nêu. Sau đó, có lẽ chúng tôi có thể cho bạn biết, làm thế nào để đưa cái này vào WorkBench. Tất nhiên không cần IP / Tên máy chủ thực sự, nhưng hãy hiển thị nó như someuser@somehost.tld để đảm bảo chúng tôi hiểu thế nào là một lệnh thực sự, bí danh là gì, v.v.
Jimmy Koerting

@Michal_Szulc Bạn đã thử chưa, những gì tôi đã viết trong bản cập nhật của mình? Nó làm việc cho bạn?
Jimmy Koerting

Vâng, tôi đã cố gắng. Không may tôi nhận được tin nhắn:Failed to Connect to MySQL at localhost:3306 through SSH tunnel at username@-o proxycommand="ssh -W %h:%p firewallhost" targethost with user root
Michal_Szulc

ok, hơn bàn làm việc với cú pháp @ của người dùng khiến cho không thể thêm thông số ssh. Đây có phải là Hộp Linux mà bạn đang làm việc hoặc cửa sổ không? Nếu là Linux - hãy tạo đường hầm ssh của bạn trên hộp cục bộ và đường hầm thông qua 2 máy (hộp của bạn được tạo đường hầm vào tường lửa vào máy chủ mysql). Đó là như nhau. Nếu bạn đang dùng Linux Box, hãy cho tôi biết. Hơn tôi sẽ cung cấp cho bạn một số dòng phải làm gì.
Jimmy Koerting
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.