FileMaker Pro を MySQL サーバーに接続する その2 SSHトンネル

FileMaker Pro を MySQLサーバーに接続して WordPress の編集と管理を行うための設定と準備。今回は「SSHトンネル接続」です。ODBCでデータベースに繋げる設定をするため、SSHで接続しトンネル経由でデータベースにアクセスする方法です。

前回記事 FileMaker Pro を MySQL サーバーに接続する その1 の続きです。

FileMaker で MySQLサーバーに接続するため ODBC Manager をインストールして設定するのですが、設定を続けるためにはデータベースへの接続を先に済ませておかねばなりません。

レンタルサーバーでは直接MySQLサーバーに繋げられないので、SSHを使って迂回(トンネル)接続をしなければならないとのことです。それやってみよう。

SSH を使ったトンネル接続とは何か

よくわかりません。では素っ気ないので私が理解した範囲で説明するとこうです。

MySQL サーバーに接続するには通常ブラウザからサーバーアドレスを入れてMyAdminに接続します。これならみんな知ってるやつですね。

ブラウザ以外からの直接的な接続は、大抵のレンタルサーバー屋さんがこれを許可していないため出来ません。

しかしコマンドベースである SSH の接続は許可している場合が多く、SSH接続を経由してデータベースに接続することなら可能です。

と、こんな感じでしょうか。わかったようなわからんような・・・

必要なもの

MySQL サーバーアドレス、ログインIDやパスワード

サーバーへのログインIDやパスワードは各自わかっているので大丈夫でしょう。サーバーアドレスはMySQLサーバーのアドレスです。

ブラウザからMyAdminに接続して画面を見ると「mysql○○○○.xerver.jp」みたいな感じのサーバーアドレスがでっかく表示されています。これがサーバーアドレスです。

SSHの設定をする際、このアドレスを記入することになります。

MyAdmin サーバーアドレス
MyAdmin サーバーアドレス画面

※ これを書いてから時が流れ、Xserverのデータベースも更新されたりしています。サーバー名が「localhost」になっていました。そんな変なアドレスなわけないだろと思いましたが、それで合ってます。各自、サーバー屋さんの情報をしっかり確認してください。

レンタルサーバーのSSH設定

レンタルサーバーの管理画面に行って SSH 接続の設定を行います。

SSH 設定 オン

サーバーパネルの SSH
サーバーパネルの SSH

エックスサーバーの場合サーバーパネルのこんなところから設定をオンにできます。

公開鍵秘密鍵

ポート番号

SSH接続のポート番号というものが必要です。上の図の下のほう、※印のところに接続ポートについて書いてあります。エックスサーバーでは【10022】とかいてありますね。一般的には【22】なのだそうで、確かにネットで情報を見ていると「接続ポートに22を入力して」と言うような記述にもよく出くわします。ネットの情報を鵜呑みにして「22」と入力してもエックスサーバーでは繋がりません。

ご自身で契約しているレンタル屋さんのサーバー情報のページでSSH接続のポート番号をしっかり確認しましょう。

公開鍵、秘密鍵

SSH設定をオンにするだけでは済まされず、公開鍵とか認証とかややこしそうな設定を行う必要があるようです。これはいったい何なのでしょう。

xserverではSSHに通常のIDとパスワードは使えません。公開鍵、秘密鍵、そのパスコードというものが必要になります。

それが何かはわかりませんが必要なものですので設定しないわけにはいきません。

Xserver の例ですが、SSH 設定の鍵についての画面で順当に進めていけば鍵が作成され秘密鍵のダウンロードが出来ます。

次にやることはMacのローカルでのお話です。

まずダウンロードした秘密鍵のファイル名を「id_rsa」に変更します(拡張子なしで)※

そしてローカルのホーム直下に「.ssh」という見えないフォルダを確認、もしなければ作成します。そのフォルダに作成した「id_rsa」を置きます。.ssh フォルダがすでにあればその中に放り込みます。

id_rsa ですが、デフォルトでその場所、その名前というお約束だそうです。このお約束を前提にした接続アプリもあります。カスタム設定できる接続アプリを使うか、全部自分で設定する場合は id_rsa という名前でなくても構いません。

接続の方法

接続クライアントアプリ

SSH はコマンドベースの接続で、接続する命令も当然コマンドベースです。難しいものです。わけのわからないものです。これらをわかりやすくまとめた SSH 接続クライアントなるアプリケーションもいろいろあるようです。

Windows では豊富な印象がありますね。Macにもあります。いくつかダウンロードして試してみましたが私にはかえって難しいものでした。簡単だと思える人はあれこれ探して使ってみてもいいでしょう。

Macでは Coccinellida というテントウムシアイコンの最強アプリがありました。何も知らない頃、このアプリだけが設定も簡単で複数接続を使い分けられてアイコンも可愛くて音も可愛いということで、大変お世話になりました。しかしmacOS10.12で使えなくなりました。

( Coccinellida についてこの投稿で詳しく書いていたのですが   Coccinellida ↓

次にSSH Tunnel Manager というアプリに切り替えました。これは10.14 での動作も確認できています。Coccinellida と比べると機能が見劣りします(複数の接続を登録して使い分けることが出来ない)が、常に一つだけの接続なら優良でした。

config を設定し、ターミナルを使う

接続クライアントアプリがなくても、ターミナルでコマンドをタタタっと入れれば同じ事ができます。というかターミナルが最強です(だそうです)

でもターミナルにタタタっと入力するそのやり方がわかりません。書き方も判りません。さてどうしましょう。

どうしましょうではいけませんので、がんばってターミナルに何をどう書けば良いのか調べ上げたこともありました。が、そのコマンドは複雑で怪奇、コマンドを記憶させる方法も知らないので自分の中では論外となりました。

そんなとき、config を作って設定しておけば良いと知り、パーフェクトな接続方法を確立できたのです。

config というのは設定ファイルのようなものです。拡張子なしの config です。これをユーザーフォルダ内の見えないフォルダ .sshフォルダ(~/.ssh)内に作り、テキストエディタで編集します。

最初に書くのが「host」です。例えば「digitalboo」という名前を付けて、以下設定の必要項目を書き連ねます。接続先サーバー名とかポート番号とかIDとかいろいろ。そうすると、ターミナルのウインドウに

ssh digitalboo

と書いてリターンするだけで SSH接続が完了します。

このやり方が真に最強ではないでしょうか。どんなアプリを使うより簡単です。config の作り方は後ほど。この投稿内の config ↓ へジャンプ

次の投稿にも詳しく書いてます → SSH トンネル接続を config で賄う

 

SSH に接続

SSH に接続するためのコマンドの書き方を検索するといろいろヒットします。ヒットしますが的確なのがなかなか見つかりません。素人向けの記事がなかなかないのですが、それもそのはず、エックスサーバー管理画面の「 ! ご注意ください」にこう書いてあります。

本機能を利用して実際に操作を行うには、UNIXの知識や、利用するコマンドに関する知識が必要です。

つまり知識のないやつはやるなと。これに関する情報はほぼすべてunixの知識を持つものだけを対象としているというわけです。

それに対してDigitalbooの当記事は「unixの知識など持ち合わせていない素人だけどSSHしかもトンネルで接続します」という内容です。

コマンド…

ということでターミナルコマンドですが基本の形は以下のようになります。多分。

ssh -p ポート番号 ユーザーID@ホスト名

「-p」がポート番号の指定で、-p の後ろに確認済みのsshポート番号を入れます。

「ユーザーID@ホスト名」は、ユーザーIDが契約しているID、@の後ろ、ホスト名はサーバーアドレスです。この形が基本のようです。

秘密鍵の場所まで指定するときは「-i」のオプションをつけるんですか。その場合はこうでしょうか。

ssh -i /Users/ユーザー名/.ssh/rsa_id -p ポート番号 ユーザーID@ホスト名

-i の後ろはMacの秘密鍵までのパスになっています。

鍵を作成したときのパスワード(パスフレーズ)などを訊いてくるので答えていくとキーチェーンに保存されます。多分。どうでしたっけ。多分そうだったような。

と、よくわからないながらこんな感じでターミナルからSSH接続できました。できましたよね?多分できますよね?

で、素人の雑魚である筆者に判るのはここまでです。SSH接続はできますが、トンネル接続まで届いていません。不十分なんですね。

ということで先ほどちょっと名を上げた接続アプリ、テントウ虫アイコンCoccinellida の話に続きます。

テントウ虫

SSH 接続を簡単に行えるアプリケーションがテントウ虫、じゃなくて Coccinellida です。

・・・と、Coccinellida の設定を詳しく載せていましたが後にCoccinellidaはmacOS 10.12 で動かなくなりました。10.11 El Capitan の人には有効ですが、今や過去の思い出です。この部分は畳んでしまいます。消すのも忍びないのでCoccinellidaに敬意を込めて。

Coccinellida macOS 10.11まで

Coccinellida – http://coccinellida.sourceforge.net

このアプリケーション、何かというと、Mac OS X 用 の簡単な SSH トンネルマネージャ ですって。そのままですね。単にSSH接続を越えて「トンネル」まで言及しています。

これを使ってSSHトンネル接続します。ターミナルにコマンド入力するのが苦にならない人には不要かもしれません。 私は Coccinellida を知って、以降これを使って接続しています。

※ 更新 註:Coccinellida は MacOSX10.11 El Capitan までしか動作しません。それ以降のOSの場合、SSH Tunnel Manager を使うか、config を作成することをお勧めします。

この小さなアプリを起動してまずは設定を行います。

Coccinellida add

Addで新規設定を作ってみます。

General でトンネルになる接続先の設定を行いますね。

Name: わかりやすい名前をつけます。

Host: 接続先サーバーです。例えばxserverなら「ユーザー名.xsrv.jp」となります。

Port: SSH接続のポート、普通は22らしいです。xserver の場合は10022 でしたね。

User: レンタルサーバーのユーザー名です。

Password: xserverの場合はパスワードは使えません。公開鍵と秘密鍵を使いますからここは空欄で。

Identify: 秘密鍵のパスです。Macで秘密鍵が前述の場所にあるなら「 /Users/ユーザー名/.ssh/rsa_id」 になりますね。

あとの項目は触らずそのままです。

 

このように入力すると、画面の下部にコマンドが現れます。このコマンドをターミナルに入れるのと同じことを設定しているというわけです。

さてもうひとつ Port Forwarding タブがあります。ここも設定しないといけません。こちらはトンネルの先にあるサーバーへの接続設定のようです。

Add をクリックして新規を作ります。

左側がローカルの設定、右側がリモートの設定のようです。

左から順に見ていきます。

Type: 「 Local」 のまま。

Local Port:  ポート番号を入れますがこれ何でしょう。さっぱりわかりません。任意のポート番号でいいそうです。任意でいいと言われてもわかりません。私はどういうわけか「2022」と入れていますね。この数字がどこから来たのかわかりませんし何ら裏付けもなさそうです。どんな数字入れてもいいの?わかりませんが動いているのでよしとします。

Local Host: 「Localhost」のまま。

Remote Host: ここに接続先のサーバーアドレスを入れます。「サーバーのIPアドレス」を入れるところだそうです。

レンタルサーバーの管理パネルでMySQLの設定を見ると MySQLのIPアドレスが確認できると思います。

でもどういうわけか私の設定ではIPアドレスでなくサーバー名が入っています。

xserver なら「ユーザーID.xsrv.jp」または「mysql○○○○.xserver.jp」でしたね、私は「mysql○○○○.xserver.jp」としています。これで動いているんだからまあ、良しとしてください。

Remote Port : 接続先サーバーのポート番号です。今動いている私の設定では「3306」と設定しています。

いったい、この数字をどこから調べてきて入力したのか、まるで覚えていません。まったく記憶にございません。でもあれこれ調べ上げている中で発見した数字であると記憶しています。普通3306らしいんです。もしレンタルサーバーからポート番号が指定されているときは指定している番号を入れればいいでしょう。

とにかく3306 で動いているので良しとします。何といういい加減な記事なのでしょう。

参考:ssh踏み台サーバ越しに、いろんなサービスにアクセスする方法集

テントウ虫で設定を終え、再びGeneralタブを見ると、下方のコマンド欄が充実していることが見て取れると思います。

SSH接続するコマンドとSSHからMySQLサーバーへ接続するコマンドがまとめて書かれている模様です。

このコマンドをターミナルにそのまま入れればSSHトンネル越しにSQLサーバーに接続できるという案配ですね。

ターミナルコマンドの知識がなくてもテントウ虫を設定することでコマンドを作成してくれました。さきほどターミナルコマンドの話が尻切れになっていましたが、ここで作成されたコマンドが正解コマンドとなります。そしてこのテントウ虫のアプリの実体は、コマンドをこうやって作成してターミナルに送り込んでいるだけの軽いアプリなんですね、多分。

Digital Boo Pennguin Icon 追記の註: うそです。ここで作られたコマンドをそのままターミナルに入れても接続できませんでした。ただコマンドを作ってターミナルに流してるだけの単純なアプリじゃありませんでした。

さてテントウ虫を起動するとメニューバーに現れますから、作成した設定を選択すると「ジュヮ」という音と共に接続されるんです。

ターミナルでコマンド入れるほうが早いわというような人を除けば、この小気味のよいアプリは使い勝手がたいへんよろしいです。

テントウ虫 Coccinellida はちょっと挙動が怪しいときがあって、無反応になったりプリファレンスが開かなくなったりしがちですが、そんな時は一旦終了して起動し直せば機嫌が直ります。

ということで、テントウムシを使って SSHトンネル接続できました。できましたよね?問題ありませんか?

config で接続する

ということで接続アプリを諦め、自分で何とかします。ご心配なく、めちゃ簡単な方法がありました。config です。

何年も後の投稿で config を使っての接続方法を書きましたが、ここにも書いておきます。

~/.ssh に config という名前のファイルを作り、テキストエディタで編集します。

config に書くお約束は以下の通り。

host
ホスト名。これがコマンドにもなります。例: digitalboo
hostName
サーバー。例:sv19999.xserver.jp
port
ポート番号を確認。xserver なら 10022、一般的には22
User
データベースユーザー名
IdentifyFile
秘密鍵が置いてあるパス(~/.ssh/id_rsa)
複数の接続を使い分けたいなら id_rsa の名前を変更して、ここにそのパスを書いておく。例えば ~/.ssh/id_rsa_xxx など。これで秘密鍵を複数置けます。
LocalForward
トンネルの設定。localhostのポート番号(何でもいい? 2022とか)と目的のMySQLサーバー名とポート番号(3306とか)。例:2022 localhost:3306
※ ここで指定したポート番号 2022 は、DNS設定と同じ番号であること。

他に、オプション的な設定もあります。
ServerAliveInterval 例: 120 …2分に一度何かを送信して接続が勝手に切れないようにする
AddKeysToAgent 例: yes …接続の際、パスフレーズを保存する、はい。
UseKeychain 例: yes … macのキーチェインに保存する、はい。

記入例

Host digitalboo
HostName sv*****.xserver.jp
port 10022
User ****
IdentityFile ~/.ssh/id_rsa_digitalboo
LocalForward 2022 localhost:3306
ServerAliveInterval 120
AddKeysToAgent yes
UseKeychain yes

記入例では、ターミナルでssh digitalboo とタイプしてリターンすれば接続できます。接続中はターミナルウインドウをそのままに。終わったら exit で終了します。

LocalForward 2022 localhost:3306 について

ここでのポート番号指定について実は筆者はまるで理解していません。ただ上手くいったときの設定を後生大事にしているだけです。

最初の 2022 は、何でもよいと聞きました。ほんとかどうかは知りません。ここで指定した 2022 は、ODBC Manager の DNS 設定内と同じである必要があります。それさえ守ればOKです。

DNS設定を作成する途中の画面。ポート番号入力欄をハイライト。
先走って dns設定の作成画面途中です。後ほどまた出てきます

最後の 3306 というのが何なのかはもう思い出せません。どこか他の何かでこの番号を指定するということもなさそうで、いったいこれは何なのでしょう(笑)判らん過ぎて笑うしかないけど、これで上手くいってるので良しとします。

 ODBC の設定

ようやくここまで来ました。

前回書いたように、ODBC Manager からアダプタActual Open Source Databases を利用し、その設定を行うわけです。

この設定は初回にやって保存してしまえばあとは触らなくても大丈夫、毎回設定するとかそんなことはありません。

ここまで済んでしまえば、晴れて FileMaker からSQLデータベースに接続できます。

ただし毎回 SSH で接続をしてからになります。テントウ虫を使う場合はテントウ虫から設定を選んで「ジュヮ」と接続してからFileMakerの該当書類を起動します。

トンネル接続していない状態で接続を前提とするファイルメーカー書類を開くと、リモートのデータが表示されません。当たり前ですが。

FileMaker のファイルを使用するたびに SSH 接続するわけです。使用が終われば接続解除します。これがルーティンとなります。

Actual Open Source Databases の設定

さて改めまして前回の続き、ODBC Manager を起動して「システムDSN」タブを選択、「追加」で設定をこしらえましょう。

ODBC Manager
ODBC Manager

「追加」を選ぶとドライバの選択を促されますからインストール済みの「Actual Open Source Databases」を選びます。

設定画面で順に決めていきます。

DSN-conf 画面

ライセンスがある人はライセンスを入力、デモ版ではそのまま。続行します。

わかりやすい名前をつけて続行します。

サーバー: IPアドレスを入れろと言われていきなりどん詰まりです。何を入れればいいのでしょう。ここにはローカルホストを入れるのです。ローカルホストの場合IPアドレスは「127.0.0.1」です。「localhost」と入れてもOKです。なぜそれがわかったのか。忘れました。でもそうなのです。ここにはローカルホストを入れます。

ポート: ローカルのポート番号を入れます。これは SSHトンネル接続設定でローカルの「任意」のところに書き入れたのと同じポートを指定します。テントウ虫のときに何と書きましたか。私は「2022」と書きましたので、同じ「2022」を書き入れます。config での設定も同じです。合わせます。

理屈はもう忘れました。設定した当時は「わかった!」と思った記憶があります。でももう忘れて設定だけが残りました。

続行します。

DSN-conf-4

データベース: 接続するデータベースを入力します。

レンタルサーバーを契約してWordpressをインストールすると、データベースが作成されますね。MyAdmin にログインしたらトップの次の階層にデータベースがあります。データベース名とはこれのことです。具体的に接続するデータベースです。このブログでしたら「ユーザー名_digitalboo」という名前になります。これを入力します。

続行すると最後の確認画面が出てきて、ここで「テスト」も出来ます。

テストしてみましょう。データベースのパスワードを求める画面が出てくると思いますのでパスワードを入れ、接続できたかどうか試します。

このとき、あらかじめSSHトンネル接続をしていないと接続できませんよ。ターミナルかテントウ虫を使って接続している状態でテストします。接続できましたね。

「テストは正常に完了しました」と出ればOK。「完了」をクリックしてこの設定を保存します。

お疲れさまでした。これにて、SSHを介してSQLに接続する設定が完了しました。

本日ここでやったこと

ということで本日やったことをまとめるとこうでした。

  • SSH設定するためのポートやサーバーアドレスの確認
  • SSH設定オン
  • 公開鍵と秘密鍵の設定
  • テントウ虫または config とターミナルでSSHトンネル接続を実現
  • ODBC Manager で システムDNS のActual Open Source Databases 設定

こうして目出度くSSHを介してのSQL接続に成功しました。

今後は File Maker Pro の設定を行って外部データベースに接続します。

次回に続きます。

続きました→ FileMaker Pro を MySQL サーバーに接続する その3 FileMaker の設定

FileMaker Pro を MySQL サーバーに接続する その3 FileMaker の設定

[追記のまとめ]

ここに沢山の追記に次ぐ追記がありました。今やどうでもいい話になったので削除して要点だけ残しておきました。

・テントウムシのCoccinellidaが次のOS10.12で動かなくなる噂について
・噂通り10.12で起動不可になった話
・代わりのアプリ、SSH Tunnel Manager の話

・以上を踏まえた、10.12に対応した投稿 macOS10.12 Sierra でトンネル接続 への案内

macOS10.12 Sierra でトンネル接続

・ずっと後、config を知った話と、投稿 SSH トンネル接続を config で賄う への案内

SSH トンネル接続を config で賄う

 

“FileMaker Pro を MySQL サーバーに接続する その2 SSHトンネル” への6件の返信

  1. いろいろ勉強になりました。ありがとうございます。MacではなくWindows利用者としても、SSHの話など「そうなんだよね」「なるほどね」が多くありました。
    ただ、拝見していてだんだんと分かってきたのですが、私は Microsoft SQL Server に FileMaker から接続する方法を探していました。ここで書かれているのはレンタルサーバー上の MySQL サーバーに FileMaker から接続する方法だったんですね。
    WordPress と記事の分類としても明記されているので、読者としてそれで気づけばいいだけの話です。そんな訪問者もいるということで、ご参考まで。

  2. 恐縮です。私がそもそもちゃんとは理解していないために判りにくい書き方にもなってしまったと思います。そもそも用語すらちゃんと判っていなかったと気づき反省しております。

    FileMakerで外部データベースに接続するときに必要なドライバを探し出すこと自体が難しかったのですが、それさえ見つかれば接続自体は難しいことではないような気がします。

    http://www.actualtech.com/products.php にも各種接続用ドライバがありますがこれらは基本Mac用のようですね。

    FileMakerからMySQLサーバーに接続して、今は運用方法で連日試行錯誤をしています。

    コメントありがとうございました。

  3. こんにちは。
    私も全くの素人ですが、ご案内の通りに一つずつ進めながらできていたのですが、最後の接続テストの所で入れる IDとPass ってどれを入れれば良いのでしょうか?

    お手すきの際にご案内頂けますと幸いです。

    1. コメントいただいていたのに放置状態が長くてすいません。今頃ですが、、、。
      最後のIDとPasswordは、MySQLデータベースサーバーにログインするためのものです。もしレンタルサーバーをご契約なら、その中でサーバーにログインするためのIDとパスワードを設定されていると思いますのでそれです。

  4. この記事はスバラシイです。
    どうか末長くアーカイブしていってください!
    私も外部MySQLサーバにMac/FileMakerを接続して使っていますが、
    いつも“設定どうすんだっけ”になっていたので・・。
    ちなみにHighSierraとSSH Tunnel Managerで期待通り動いてますよ。

    1. お褒めいただいてありがとうございます! 何の知識もないところから無理矢理やり遂げて、自分用備忘録みたいなつもりでした
      SSH Tunnel Manager は10.12、10.13、問題なく使えるんですね。ありがたいアプリケーションです。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください