SSHトンネルソリューション
MySQLデータベースサーバーへのSSHトンネルを設定します(セキュリティのためにJumpboxプロキシを介して)。
(A)GUIツール
要件に応じて、 Visual Studio CodeなどのSSHトンネリングサポートが組み込まれたGUIMySQLクライアントを使用できます。 ポートの転送/SSHトンネルの作成 、 TablePlus または、PuTTY を使用します ローカルを設定するには ポートフォワーディング。
macOSでは、安全なパイプa>が好きです。 または
(B)コマンドライン
ステップ1。
ssh -fNg -L 3307:10.3.1.55:3306 [email protected]
ここで重要なのは'-L' ローカルを要求していることをsshに通知するスイッチ ポートフォワーディング。
ポート3307を使用することを選択しました その上。 ローカルのすべてのトラフィック このポートに向けられたマシンは、私のsshクライアントを介して「ポート転送」されます。 sshサーバーへ アドレスssh-jumpbox.com
のホストで実行されています 。
Jumpbox sshプロキシサーバーはトラフィックを復号化し、ユーザーに代わってMySQLデータベースサーバーへのネットワーク接続を確立します。10.3.1.55:3306
、 この場合。 MySQLデータベースサーバーは、Jumpboxの内部ネットワークアドレスからの接続を認識します。
ローカルポート転送構文
構文は少し注意が必要ですが、次のように表示されます。
<local_workstation_port>:<database_server_addr_remote_end_of_tunnel>:<database_server_port_remote_end> [email protected]_proxy_host.com
他のスイッチに興味がある場合は、次のとおりです。
-f(バックグラウンドに移動)
-N(リモートコマンドを実行しない)
-g(リモートホストがローカルに転送されたポートに接続できるようにする)
秘密鍵認証、上記に(-i)スイッチを追加:
-i / path / to / private-key
ステップ2。
ローカルMySQLクライアントに、マシンのローカルポート3307(-h 127.0.0.1)を介してSSHトンネルを介して接続するように指示します。これにより、手順1で確立したSSHトンネルを介して送信されたすべてのトラフィックが転送されます。
mysql -h 127.0.0.1 -P 3307 -u dbuser -p passphrase
クライアントとサーバー間のデータ交換は、暗号化されたSSH接続を介して送信されるようになり、安全になりました。
セキュリティノート
データベースサーバーに直接トンネリングしないでください。データベースサーバーにインターネットから直接アクセスできるようにすることは、セキュリティ上の大きな責任です。トンネルターゲットアドレスをJumpbox/要塞ホストのインターネットアドレス(ステップ1の例を参照)にし、データベースターゲットを内部にします。 リモートネットワーク上のデータベースサーバーのIPアドレス。残りはSSHが行います。
ステップ3。
次に、PHPアプリケーションを次のコマンドで接続します。
<?php
$smysql = mysql_connect( "127.0.0.1:3307", "dbuser", "passphrase" );
mysql_select_db( "db", $smysql );
?>
Chris Snyder'sのクレジット すばらしい