広告





X


GitHub


※A5:SQL Mk-2はGitHubのプライベートリポジトリで開発されているためソースコードを参照することはできません。
      

A5:SQL Mk-2 から SSHトンネルを利用して MySQL へ接続する


 この文書はVersion 2.7.2までを対象として書かれています。Version 2.8.0以降で Oracle (直接接続)、PostgreSQL (直接接続)、MySQL (直接接続)の場合は、A5:SQL Mk-2単体(Cygwin等不要)でSSH経由接続をすることができます。
 
 このページでは A5:SQL Mk-2 から SSHトンネルを利用して MySQL へ接続する手順を示します。

 例えば、よくあるレンタルサーバーは外部からMySQLに直接接続出来る設定になっていることは稀ですが、SSHトンネルを介せば接続出来ることがあります。

 また、自宅から会社の公開されているSSHサーバーにアクセスし、そこを経由してMySQLサーバーに接続することも出来ます。

 ここでは、MySQLを使って接続していますが、ポートを固定で一つのみ使うタイプのRDBMS製品ならば同じように接続が可能です。

 この説明で使ったソフトウェアのバージョンは以下のとおりです。

 A5:SQL Mk-2 Version 2.6.3
 Cygwin 版 SSHクライアント 5.9p1-1 (c:\cygwin へインストールされている)

ケース1(SSHサーバーとMySQLサーバーが同じサーバーである場合)

 このケースはSSHサーバーとMySQLサーバーが同じサーバーに導入されている場合です。例えば、自宅からレンタルサーバー上のMySQLに接続する場合などはこの典型です。

 サーバー "server1" 上でMySQLサーバーが3306番ポートを利用しており、SSHサーバーが22番ポートを利用している場合を例にします。ホスト名やポート番号等は適宜変更して下さい。



手順1.クライアントPCからSSHサーバーへSSHトンネルを作成する。

 コマンドラインから以下のコマンドを実行します。SSHのユーザー名として、"matsubara" を指定していますが、こちらも適宜変更して下さい。

 パスワードが聞かれたらパスワードも入力します。

 鍵ファイルを指定するには、さらに -i オプションで指定します。
>c:\cygwin\bin\ssh.exe -2 -N -f -L 3307:127.0.0.1:3306 matsubara@server1 -p 22


オプションの意味
 -2 SSH2を利用
 -N SSHトンネルのみ使用
 -f バックグラウンド実行
 -L トンネルを作成
  (-L クライアント側ポート:127.0.0.1:MySQLのポート)
 matsubara@server1 SSHユーザー名@ホスト名
 -p SSHサーバーのポート番号を指定

手順2.A5:SQL Mk-2からデータベースを登録

 A5:SQL Mk-2からデータベースの追加と削除画面でMySQLを指定してデータベースを登録します。

 必ずホスト名には "localhost" を、ポート番号には sshコマンドで指定した「クライアント側ポート」を指定します。

 ここで「テスト接続」ボタンを押下し、接続が出来たら成功です。




ケース2(SSHサーバーとMySQLサーバーが異なるサーバーである場合)

 このケースは自宅から会社の公開されているSSHサーバーに接続し、それを経由して社内のMySQLサーバーへ接続する場合などです。

 SSHサーバーからMySQLサーバーへは接続出来る必要がありますが、MySQLサーバーは外部に公開されている必要はありません。

 サーバー "server1" 上の22番ポートでSSHサーバーが稼働し、そこからサーバー "server2" 上の3306番ポートで待ち受けしているMySQLサーバーへ接続する例を示します。



手順1.クライアントPCからSSHサーバーへSSHトンネルを作成する。

 コマンドラインから以下のコマンドを実行します。SSHのユーザー名として、"matsubara" を指定していますが、こちらも適宜変更して下さい。

 パスワードが聞かれたらパスワードも入力します。

 鍵ファイルを指定するには、さらに -i オプションで指定します。

>c:\cygwin\bin\ssh.exe -2 -N -f -L 3307:server2:3306 matsubara@server1 -p 22


 ここでは、-L 3307:server2:3306 と指定しているのが肝となります。server2はMySQLのサーバーを表しますが、server1からの立場でのホスト名又はIPアドレスを指定します。クライアントPCから server2 へIPプロトコルで接続出来る必要はありません。

手順2.A5:SQL Mk-2からデータベースを登録

 A5:SQL Mk-2からデータベースの追加と削除画面でMySQLを指定してデータベースを登録します。

 ケース1と同様に必ずホスト名には "localhost" を、ポート番号には sshコマンドで指定した「クライアント側ポート」を指定します。

 ここで「テスト接続」ボタンを押下し、接続が出来たら成功です。




接続を放置すると接続が切断されてしまう場合

 SSHサーバーの設定によっては、接続後に放置すると一定時間で「Connection reset by peer」などが表示されて強制切断されてしまう場合があります。

 この場合は、SSHサーバーの設定ファイルを編集してKeepaliveを設定します。

 UNIXやLINUX等の多くのOSでは、/etc/ssh/sshd_config です。この設定ファイルに以下の記述を追加します。

ClientAliveInterval 15
ClientAliveCountMax 5

 この例では15秒に1度サーバーからクライアントに対してKeepaliveメッセージを送信します。

 そして連続で5回Keepaliveメッセージに応答がなかった場合、サーバーは接続を切断します。



home
 
      
プレミアムサポート