Giải pháp đường hầm SSH
Thiết lập đường hầm SSH tới máy chủ cơ sở dữ liệu MySQL của bạn (thông qua proxy Jumpbox để bảo mật).
(A) Công cụ GUI
Tùy thuộc vào yêu cầu của mình, bạn có thể sử dụng ứng dụng GUI MySQL với hỗ trợ SSH Tunneling được tích hợp sẵn, chẳng hạn như Visual Studio Code Chuyển tiếp một cổng / tạo đường hầm SSH , TablePlus hoặc sử dụng PuTTY để thiết lập cục bộ chuyển tiếp cổng.
Trên macOS, tôi thích Ống dẫn an toàn hoặc TablePlus .
(B) Dòng lệnh
Bước 1.
ssh -fNg -L 3307:10.3.1.55:3306 [email protected]
Chìa khóa ở đây là '-L' chuyển đổi cho ssh biết chúng tôi đang yêu cầu cục bộ chuyển tiếp cổng.
Tôi đã chọn sử dụng cổng 3307 bên trên. Tất cả lưu lượng truy cập trên địa phương của tôi máy được hướng đến cổng này giờ sẽ được 'chuyển tiếp cổng' thông qua ứng dụng khách ssh của tôi tới máy chủ ssh chạy trên máy chủ tại địa chỉ ssh-jumpbox.com
.
Máy chủ proxy ssh Jumpbox sẽ thay mặt bạn giải mã lưu lượng và thiết lập kết nối mạng với máy chủ cơ sở dữ liệu MySQL của bạn, 10.3.1.55:3306
, trong trường hợp này. Máy chủ cơ sở dữ liệu MySQL thấy kết nối đến từ địa chỉ mạng nội bộ Jumpbox của bạn.
Cú pháp chuyển tiếp cổng cục bộ
Cú pháp hơi phức tạp nhưng có thể thấy như sau:
<local_workstation_port>:<database_server_addr_remote_end_of_tunnel>:<database_server_port_remote_end> [email protected]_proxy_host.com
Nếu bạn quan tâm đến các công tắc khác, chúng là:
-f (chuyển đến nền)
-N (không thực hiện lệnh từ xa)
-g (cho phép máy chủ từ xa kết nối với các cổng được chuyển tiếp cục bộ)
Xác thực Khoá Cá nhân, thêm (-i) chuyển sang ở trên:
-i / path / to / private-key
Bước 2.
Yêu cầu ứng dụng khách MySQL cục bộ của bạn kết nối qua đường hầm SSH của bạn qua cổng cục bộ 3307 trên máy của bạn (-h 127.0.0.1), cổng này hiện chuyển tiếp tất cả lưu lượng được gửi đến nó qua đường hầm SSH mà bạn đã thiết lập ở bước 1.
mysql -h 127.0.0.1 -P 3307 -u dbuser -p passphrase
Trao đổi dữ liệu giữa máy khách và máy chủ hiện được gửi qua kết nối SSH được mã hóa và được bảo mật.
Lưu ý bảo mật
Không chuyển trực tiếp đến máy chủ cơ sở dữ liệu của bạn. Có một máy chủ cơ sở dữ liệu có thể truy cập trực tiếp từ internet là một trách nhiệm bảo mật rất lớn. Đặt địa chỉ mục tiêu đường hầm là địa chỉ internet của Máy chủ Jumpbox / Bastion của bạn (xem ví dụ ở bước 1) và cơ sở dữ liệu của bạn nhắm mục tiêu đến nội bộ Địa chỉ IP của máy chủ cơ sở dữ liệu của bạn trên mạng từ xa. SSH sẽ làm phần còn lại.
Bước 3.
Bây giờ, hãy kết nối ứng dụng PHP của bạn với:
<?php
$smysql = mysql_connect( "127.0.0.1:3307", "dbuser", "passphrase" );
mysql_select_db( "db", $smysql );
?>
Ghi có cho Chris Snyder's tuyệt vời bài viết trình bày chi tiết đường hầm dòng lệnh ssh cho kết nối MySQL.