このガイドでは、SSHトンネルを使用して、ローカルコンピューターからリモートMySQLまたはMariaDBサーバーに安全に接続する方法を説明します。 。これは、ローカルコンピューターの管理ツールを使用してサーバーで作業を行う場合に便利です。
SSHトンネルは、SSHプロトコル接続を介して作成された暗号化されたトンネルです。 SSHトンネルを使用してMySQLデータベースとリモートで通信できます。これらの手順に従うと、localhost
に接続できるようになります。 お気に入りのMySQL管理ツールを使用してワークステーションで。接続はインターネット経由でLinodeに安全に転送されます。
注 MariaDBはMySQLのフォークであり、ドロップインの代替と見なされます。このガイドはMySQLについて言及していますが、MariaDBにも同様に適用されます。
前提条件
- MySQLがインストールされています。
- MySQLは、
localhost
でリッスンするように構成されています (127.0.0.1)。これはデフォルトで有効になっています。
PuTTYを使用してSSHトンネルを作成してMySQLにリモートアクセスする方法
このセクションでは、PuTTYツールを使用してWindowsでMySQLへのSSHトンネルを作成する方法を説明します。
トンネルの設定
まず、Linodeへの基本的な接続を確立する必要があります:
-
DownloadPuTTY。
-
PuTTYをデスクトップに保存します。
-
開始するには、PuTTYファイルをダブルクリックします。インストールする必要はありません。次のウィンドウが表示されます:
-
ホスト名(またはIPアドレス)にLinodeのホスト名またはIPアドレスを入力します フィールド。
-
左側のメニューで、接続->SSH->トンネルに移動します 。
-
ソースポート フィールドに
3306
と入力します 。 -
目的地 フィールドに
127.0.0.1:3306
と入力します 。以下の最終構成を参照してください: -
開くをクリックします SSHセッションを開始します。
-
これまでにPuTTYを使用してこのシステムにログインしたことがない場合は、次のような警告が表示されます。このサーバーが接続先のサーバーであることを確認し、[はい]をクリックします :
注 この警告が表示されるのは、PuTTYが、ログインしているサーバーが本人であることを確認するように求めているためです。誰かがあなたの接続を盗聴し、あなたのLinodeを装っている可能性は低いですが、可能性があります。サーバーを確認するには、PuTTY警告に表示されている主要な指紋( ssh-rsa で始まる数字と文字の文字列)を比較します。 上の画像では、Linodeの公開鍵の指紋が付いています。 Linodeの指紋を取得するには、LishコンソールからLinodeにログインします(コンソールを参照)。 Linode Managerのタブ)そして次のコマンドを実行します:
ssh-keygen -l -f /etc/ssh/ssh_host_rsa_key.pub
キーフィンガープリントは一致する必要があります。 はいをクリックしたら 、PuTTYに提示されたキーが何らかの理由で変更されない限り、それ以上の警告は表示されません。通常、これは、リモートサーバーのオペレーティングシステムを再インストールした場合にのみ発生します。キーがすでにキャッシュされた後に同じLinodeに対してこの警告が再度表示された場合は、接続を信頼せず、問題をさらに調査する必要があります。
-
ローカルMySQLクライアントを
localhost:3306
に転送します 。リモートMySQLサーバーへの接続はSSHを介して暗号化されるため、パブリックIPでMySQLを実行しなくてもデータベースにアクセスできます。
MacOSXまたはLinuxでSSHトンネルを作成する
このセクションでは、MacOSXまたはLinuxでMySQLへのSSHトンネルを作成する方法を説明します。
-
MySQLクライアントをインストールします。 MySQLサーバーのインストールには、クライアントのインストールがあらかじめパッケージ化されています。クライアントのみをインストールするには:
MacOS
brew install --cask mysql-shell
Ubuntu / Debian
sudo apt install mysql-client
-
コマンドプロンプトを開き、次のコマンドを実行してSSHトンネルを開きます。
ssh [email protected] -L 3306:127.0.0.1:3306 -N
< [email protected]を置き換えます>SSHユーザー名とサーバーのホスト名またはIPアドレスを使用します。コマンド内の数字の長い文字列は、ローカルIP、ローカルポート、リモートIP、およびリモートポートをコロンで区切って一覧表示します(: 。
-L
-ローカルポートをリモートホストポストにバインドします。-N
-ポートを転送することを意味します。注 ワークステーションでローカルMySQLサーバーをすでに実行している場合は、別のローカルポートを使用します(3307が一般的な選択です)。新しいコマンドは次のようになります:
ssh [email protected] -L 3307:127.0.0.1:3306 -N
-
新しいターミナルウィンドウを開きます。ローカルMySQLクライアントを
127.0.0.1:3306
に転送します MySQLサーバーのユーザー名とパスワードを使用します。MacOS
mysqlsh --host=127.0.0.1 --port=3306 -u user -p
Ubuntu / Debian
mysql --host=127.0.0.1 --port=3306 -u user -p
リモートMySQLサーバーへの接続はSSHを介して暗号化されるため、パブリックIPでMySQLを実行しなくてもデータベースにアクセスできます。
-
接続を閉じる準備ができたら、 CTRL-Cを発行します コマンドを実行するか、コマンドプロンプトウィンドウを閉じます。これにより、SSHトンネルが閉じられます。
永続的なSSH接続
永続的なSSHトンネルが必要な場合は、autosshの使用を検討してください。 autosshはSSH接続を開始および監視し、必要に応じて再起動します。
詳細情報
このトピックの詳細については、次のリソースを参照してください。これらは有用であることを期待して提供されていますが、外部でホストされている資料の正確性や適時性を保証することはできません。
- PuTTYの使用
- MySQLドキュメント
- MariaDBドキュメント
- autossh