macOS 10.11 から 10.12 になって、これまで出来ていたことが出来なくなる事例があります。SSH トンネル接続のアプリが使えなくなることもその一つ。対処しましょう。
この話はMacでトンネル接続してFileMakerでWordpressを使っていくという下記記事の続きというか捕捉です。
この記事の最後のほうで、「10.12ではこの記事は無効です。だって動かないそうだから」みたいなことを書いています。そこに追記や追記の追記があって、最新の追記では10.12でもトンネル接続できたということをさっき書きました。それについてこちらで詳細を書きます。
10.12 Sierra でトンネル接続できない
macOS10.12でOpenSSHがv7になってこれまでできていたことができなくなった
こう見えても私はMacのことも世の中の事も何も知らない無知無知小僧でして、当然SSHやターミナルのことなどまったくわかりません。トンネル接続してmySQLに接続してFileMakerで運営するとかやってますが全部見様見真似で意味も理屈も何もわかっていません。OpenSSHとか言われてもそれが何なのかもわかりません。でもバージョンが上がってそれまでできていたことが出来なくなったという状況は理解出来ました。
無知無知小僧でもトンネル接続が実現したのはひとえにテントウ虫Coccinellidaというアプリがあってくれたこそで、これが動かなくなるバージョンアップならそんなの不要であると、OSを上げることを避けてきました。
10.12をお試ししてテスト
しかし本当に動かなくなるのか自分で確認しないというのも抵抗あります。ですのでたまたま転がっていたMacBookProで10.12テストを行いました。また嘘つきましたMacBook Proはたまたま転がってはおりません。
10.12でテントウ虫は動きません
テントウ虫は動かないというより挙動不審で使い物にならないという状態でした。「接続」「解除」「接続」「解除」と延々とくり返しジタバタします。
単にOSを上げたことによりアプリの互換性が失われたわけではなく、何か内部から送り出すコマンドに問題があるような感じです。噂のOpenSSHのバージョンによる問題だろうと予測できます。
ターミナルを開いて、なんとか自力で接続できないかと試しました。色々やりましたが、致命的にunixの知識が欠落していることが原因でドツボにはまりまして、詳しく言い訳はしませんが取りあえず一旦ターミナルは諦めたりします。
それでテントウ虫の代替となるアプリケーションはないものかと探し、いくつかのSSHのアプリケーションを見つけては試すということを繰り返しました。しかしここの筆者は基礎知識も欠落している無知無学の雑魚なので、ダウンロードしたアプリの設定の仕方すらわかりません。
テントウ虫の吐き出す接続できていたころのコマンドを眺めては「この欄にはこれをいれるのかな」「こっちの欄にはこの数字を入れるのかな」と適当にテストします。設定すらまともに出来ないのにアプリの評価など出来ませんが、ことごとく接続出来ませんでしたので「だめだこんなの」と吐き捨てます。酷いやつがいたもんです。
でもテストですから接続できている10.11とテスト機10.12を並べて作業します。テントウ虫以外のアプリは10.11でも接続できなかったのでだめなやつで大体合ってます。
この中でキラリと光るアプリがひとつありました。
SSH Tunnel Manager
SSH Tunnel Managerという小さなアプリケーションです。最新の更新は2016年、El Capitanに対応したあたりで止まってます。でもテントウ虫の最新版は2015年でEl Capitanに正式に対応してるとも言い難いものです。テントウ虫より新しいので少し期待します。
テントウ虫ほどではないですがアイコンも可愛いです。最初はおかっぱ頭の女の子の幽霊のアイコンと思いましたが拡大するとそうでないことが分かります。次にオバQかニョロニョロのアイコンかなと思いますがそうでもなく、これはトンネルを表しています。なーんだ。
10.11 El Capitan でトンネル接続出来たアプリは後にも先にもテントウ虫とSSH Tunnel Managerだけでした。
SSH Tunnel Manager の設定
他のアプリと同じく設定でつまずいたものの、公式のドキュメント のおかげで何とかなりました。
SSH Tunnel Manager の設定画面です。
下半分の二つの入力欄、使い方に応じてどちらか一方だけ入れれば良かったんです。両方に何か入れないといけないと思ってジタバタしていましたが上にだけ入れればできました。
この接続のパターン図で、上なら上の箱、下なら下の箱に入力すると、ものすごく分かりやすい説明が公式ドキュメントにありました。
さて設定です。Name:は自分識別用の何でもいい名前です。
Login: はSSHのサーバーに入るID、レンタルサーバー契約者ならその契約IDになりますか。
Host: はSSHで入り込むサーバーです。Port: はそのポート。一般的には22らしいがXserverでは10022であると指定されているそのポート番号です。
下の箱がトンネルの設定で、ローカルからトンネル接続するのは上の箱だけ入力します。左Port: はLocalhostの任意のポート、Remote Host: にはトンネル越しに接続する相手(mySQLサーバー)、右Port: にはポート番号を入れます。
公開鍵を設定する画面がないので最初は「こりゃだめだな」と思っていたんですが、そういうのは設定すらなくて勝手に公開鍵を読みに行ってくれるみたいで、パスフレーズを訊いてくるんです。「USER/.ssh/id_rsa」ってやっぱり決まり事なんですね。
10.11で動くSSH Tunnel Manager
SSH Tunnel Manager は10.11でテントウ虫と同じように動きました。mySQLに繋がってFileMakerで編集もできます。10.11である限り、テントウ虫とSSH Tunnel Managerというふたつの優良なソフトでやりたいことがやれるのです。
10.12で SSH TUNNEL MANAGER
良い予感がしてさっそく10.12にてSSH Tunnel Managerをテストしてみます。結果は芳しくありませんでした。
芳しくないなどという中途半端な言い方をするのは、テントウ虫とは明らかに挙動が異なっていて、なんか惜しい感じがしたんですよ。繋がってるような失敗しているような微妙な感じでした。
試しにFileMakerを編集してみると、FileMakerからmySQLのパスワードを何度も聞いてきたりします。つまりちょっと接続できてるんですよ。でもちょっとだけなんで実際にはサーバーから弾かれています。
挙動不審だけど繋がってるぽいこのイラつく状態で数時間あれやこれやと格闘したり水出しアイスコーヒーを飲んだりしました。
10.12 Sierra でトンネル接続できた
SSH Tunnel Manager を信じて格闘した結果、10.12で見事トンネル接続に成功しました。
どうやったのか。もったいぶらずに書きます。
10.11環境から User/.ssh/known_hosts をコピーして持ってきた
公開鍵の名前や置き場所についてですが、以前は「実際は何でもいいんじゃないの?」と思ってましたが決まり事があって、名前は「id_rsa」置き場は「User/.ssh/id_rsa」なんですね。決まり事でもありデフォルトでもある装置として作用します。
で、接続ができた環境で.sshフォルダをみると「known_hosts」というファイルが勝手に作られています。
known_hosts
「知ってるホスト」というこの謎ファイル、名前の通り知ってるホストの何かを記録しているんでしょう。接続するとこれが作られ、壊れると「知ってるはずなのに」状態に陥るということが想像できます。
実は以前テントウ虫で挙動不審が相次いでまったく接続出来なくなったことがありました。そのときの最後にやった対処が「公開鍵を作り直して置き直した」ことでした。このときはじめて「known_hosts」というファイルに気づき、捨てるの怖いからリネームして脇に置いといたんです。
そうすると新しい公開鍵で機嫌良く繋がって治ったわけですが、known_hostsがまた新しく作られていました。このとき薄らぼんやりこう考えました。「公開鍵のほうじゃなくて、こっちのknown_hostsというやつが壊れたのが原因だったのじゃなかろうか」
それを思い出して、正しく接続出来ている10.11環境からknown_hostsを持ってきて10.12のを上書きしてしましました。
SSH Tunnel Managerで繋がった
結果、SSH Tunnel Managerは見事な働きっぷりを発揮し、10.12環境下でトンネル接続を成功させました。
小躍りして喜んだのは私です。
10.11で接続できていた状態で作成されたknown_hostsをコピーすることにより10.12を騙くらかして接続可能にしたのでしょうか。
またあるいはもしかしたら、いろんな実験の途中でknown_hostsが壊れてしまっていただけで、最初からSSH Tunnel Managerで接続できていたのかもしれない。
はたまたあるいは、どうやっても10.12では正しいknown_hostsを作ることが不可能で、上手く作られている10.11環境からのコピーでしか成功しないという可能性もあります。もしそうなら、これは大変憂慮すべき事態であるかもしれません。10.11環境の保存がずっと必要と言うことですからね。
テントウ虫はやっぱ不可でした
テントウ虫アイコンと接続時の「ジュワ」という音に愛着心を持っているので、この状態でもしやテントウ虫も動くのかと期待して再テストします。ですがテントウ虫はやっぱりだめでした。
FileMaker Proでエラーが出る場合
FileMaker ProがサーバーのIDとパスワードを何度も求めてくるエラーが出ることがありました。正しいIDをパスワードを何度入れても拒否られてしまいます。
もしこういうエラーが出たら、ファイルメニューの管理/外部データソース を確認してみましょう。
自分の場合、いつのまにかDSNの設定が微妙に変になってました。微妙に変なので気づくのが遅れたほど。「指定」で正しく指定し直したら治りました。ODBC Managerのドライバをアップデートしたのが原因かもしれません。
エラーの時は見直す事柄が多岐に渡りますね。トンネル接続の設定、ODBC Manager、ODBC Managerに設定しているシステムDSNのドライバ(Actual Open Source Databases)、FileMaker Proの共有や外部データソース設定、それぞれ出所も違う別々のものたちです。これらが絡み合って作用していますから何かと面倒ですね。
10.11から10.12に上げてもいいかもしれない
というわけで絶望視されていた10.12環境でのトンネル接続に成功したお話でした。
10.11と10.12はSSH絡みのほかは大きな違いがないような話をちらほら聞きます。当初完全にアウトだったKarabinerもKarabiner-Elementsとしてコマンド変換が使えるようになったし、絶望的だったXtraFinderすら対応しました。どうでもいい系だけどcDockやLiteiconなども動くようになりました。要であるAdobe のCS6も動きます(TeX Alchemist Online)。Final Cut Pro7が動く最後のOSです。QuickTime Proも動作を確認できました。10.11で耐えられているんなら10.12でも今からだと問題があまりない気がします。
10.12を最低基準にしたアプリのアップデートも増えてきました。Logic Pro X、FileMker Pro、他にも増えてくることでしょう。10.11で我慢できてるんならそろそろOKかな、とトンネルを出たらそんな穏やかな気持ちに少しなれました。
後日談
この投稿から時が経ちました。SSH Tunnel Manager は、macOS Mojave でも動作が確認済みです。
さらに時が経ちました。接続アプリを使わず、自分で何とかしてターミナルで接続するようになりました。