MedisのSSH Tunnelでプライベートキーが指定できなかったことの解決方法


業務でRedisを使っており、中身をみたい時に毎回コマンド打つのは嫌だったのでMedisをインストールしたのですが、なぜかSSH接続時のプライベートキーが指定できない状態になってしまったので、その解決策を書いておきます。もし万が一同じ様な現象になった人の参考になれば幸いです。

ついでなので、MacのAutomatorというのを使ってワンクリックで起動できる様にしてみました。

Medisとは

NoSQLデータベースの一種であるRedisのGUIクライアント

環境

  • mac os catalina

Medisをインストールする

こちらの記事をまるっと参考にさせていただきました。

コマンドを打たないで起動したい

ということで、さらにこちらの記事を参考にさせていただき、Electronってやつを通して起動できる様にしました。

この作業をしてLanchpadにElectronのアイコンが出現した。

これをクリックしたら無事にMedisが起動しました!

SSHトンネル機能もあるのでSSHサーバに接続してからの、そのサーバ内にあるRedisに接続もできます!

・・・ID/パスワードによる接続方式なら。。

なぜかキーファイルを指定しても接続できない問題

「SSH Password:」の右端に鍵マークがあるので、ここをクリックしてローカルにあるプライベートキーを選択すれば、秘密鍵方式での接続もできるはずなんです。
なのに、ファイル選択ダイアログで選択しても何の変化もない。。。
こんなんでいいのかなー。と思いつつ半信半疑でその他の情報を入力してConnectボタンをポチっと。

SSH Error: All configured authentication methods failed

案の定、接続できないと言われます。
どうやら選択したプライベートキーが使われていない模様。

この後いろいろ試行錯誤してみたのですが、結局はMedisのインストールの時に参考にさせて頂いた記事の通り、npm startコマンドを打って立ち上げたらうまくいきました。

↑こんな感じ。

  • プライベートキーを指定したら「SSH Password:」から「SSH Key:」に変わった。
  • 選択したキーファルのパスがテキストボックスに表示された
  • 今回は指定した鍵にパスフレーズを設定していたので「SSH Key Passphrase:」入力欄も表示された。(パスフレーズが設定されていなければ表示されません)

これで解決!・・・・ではなく、もともとやりたかった事は「コマンドを打ちたくない!」なので、別の策を講じました。

Automatorを使ってアプリっぽくする

MacにはAutomatorという機能?ツール?があり、これを使うとアイコンのクリックで何やら動かせるらしい事を知りました。

Automatorを起動

こいつ。

Automatorは普通にLanchpadに入っていました。

クリックすると、こんな感じのが開くので「アプリケーション」を選択する。

実行させたいスクリプトを定義する

画面の左側には色々な操作一覧が羅列されているので、その中から「シェルスクリプトを実行」を選択し、実行したいスクリプトを記述します。

↓ 今回はnpm startを実行したいだけなのでとてもシンプルな記述です。

  • プルダウンはデフォルトのまま
  • コマンドはMedisの場所に移動してnpm startしてるだけ

最初の行では、export PATHをしていますが、これをしないで実行したところ、パスが通ってないよというエラーが出てしまいました。
よくわからないですが、Automatorで設定したスクリプトの実行ユーザは自分(ログインユーザ)ではないのでしょうか?
とりあえず~/.bash_profileに書いてあったものをそのままコピーしました。

あとは保存して実行

保存したファイルをDockに追加してクリックしたら、横にElectronが出現してアプリが立ち上がりました。

これで無事にワンクリックで、プライベートキーを選択できるMedisが立ち上がる様になりました。

所感

Electronからの立ち上げでうまくいかなかったのは、きっと自分の環境が悪かったのだろうという気がしています。今回は代替案(妥協)でAutomatorを使いましたが、そもそもAutomatorって、使いこなせれば色々な事ができる便利ツールなのですね。
複数の操作を順番に選択することで、処理をチェーンさせることができるので、手軽に(?)アプリが作れそうです。

ElectronはMac以外でも使えるのでアプリの配布には便利そう!そしてかっこいい。
とくにフロントエンドエンジニアさんには敷居が低そうですね。

参考にさせて頂いた記事