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ử firewallhost
là 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:
Để có đường hầm ssh firewallhost
liê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 để firewallhost
tạ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.
firewallhost
và 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ớitargethost
đầ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 dbfirewallhost
và rõ ràng là không ổn.