iPhoneやiPadからリモートメンテナンスなどできたり、CUIでメール読めるといいなぁと思い、 幾つかSSHクライアントを試してみました。希望としては以下のことができるSSHクライアントが欲しかったわけです。
- SSH鍵で認証できる
- 既存のSSH鍵をインポートして使える
- SSHトンネリングが使える
iPhone/iPad用SSHクライアント
SSHクライアントにはこんなのがあるそうです。どれも有償だったり値段も高めですよね。
| アプリ名 | 価格 | SSH鍵生成 | 鍵import | トンネル |
|---|---|---|---|---|
| SSH | 450円 | × | × | × |
| TouchTerm SSH | 450円 | ○ | × | × |
| TouchTerm Pro SSH | 1000円 | ○ | ○ | ×将来予定? |
| iSSH | 1200円 | ○ | × | △X,VNCのみ? |
| pTerm SSH | 600円 | ○ | × | ○ |
| SSH-Terminal | 115円 | × | × | × |
| SSH Term Pro | 350円 | ○? | ○?? | × |
鍵のインポートでハマる
マニュアルなんか読まなくても鍵のインポートぐらいできるだろうとタカくくってたんですが。結果、そんなに甘くなかったです。その紆余曲折っぷりを書いておきます。
まず、OpenSSHで使えるパスワードで保護されたRSA秘密鍵(PKCS#1)をメールやウェブやなんらかの方法でテキストとしてコピーしておき、 Settings>SSH Keyを開くと「Create New Key」しか選ぶことができません。 で、New SSH keyを開いてみると、インポートなどできず、パスワードで保護してない鍵でもやってみましたが、そういう問題ではないようです。
よくわからないので、認証失敗しようがSSHでつないでみました。認証は失敗に終わるわけですが、そこで出てくる設定ボタンからたどった「New SSH Key」には何と「Import Key from Clipboard」とあります。そこで、メールやメモ帳などのiPhone別アプリで
- パスワードつきRSA秘密鍵(PKCS#1)
- パスワードなしRSA秘密鍵(PKCS#1)
- パスワードなしRSA秘密鍵(PKCS#1)のPEMヘッダ、フッタを除いたもの
こりゃもう埒があかなそうなので、仕方なく マニュアルを読んでみることにしました。 ssh秘密鍵をインポートすることの危険性や言い訳みたいなことが つらつら書いてありますが、やりかたはこんな感じ。
【注意】
TouchTerm Pro SSHでインポートされたRSA鍵を利用できるようにするには RSA鍵でなくIDパスワードでログイン可能なSSHサーバーが必要になります。 「んなアホな?」と思うかもしれませんが仕様ですorz。 サーバーの設定を暫定的に変更するなり、 別のIDパスワード認証対応のSSHサーバーを用意するかして下さい。
- IPパスワードでログインできるsshサイトにログインする。
- そこに秘密鍵を置いておく。
cat ~/.ssh/id_rsaなどでターミナルに秘密鍵をテキスト表示する。- TouchTerm Pro SSHの機能により表示されているか鍵をコピーする。
- 指二本で押さえるとコピー選択領域の開始と終了が拡大表示されるので、希望の開始位置、終了位置に合わせる。
- これが結構難しい。文字サイズが小さくてやりにくい場合には、画面を下から上へなぞると文字サイズが大きくなる。
- 開始終了がうまく設定できたら画面の左上を一回タップする。すると[1]のように表示される。デフォルト設定ではこれはコピー操作。
- セッションの設定のところから歯車(Settings)を開きSSH KeyのところからNew SSH Keyを開く。
- 鍵の名前入れる
- パスワード付きのRSA秘密鍵(PKCS#1)ならばパスワードを入れておく
- 「Import Key from Clipboard」をクリック。
- 鍵がちゃんとインポートされ、使えるようになる。
既存のSSHの設定変えて鍵なしIDパスワード認証を許すのが嫌な場合には、どこかローカルにSSHサーバーを立てるのがよいでしょう。Windowsならば freeSSHdがおススメなので過去のブログ記事を参考にしてみてください。
これで、鍵を使ってSSHログインできるようになったはず。どうでしょうか?Touch Term Pro SSHは最初はゼスチャーがとっつきにくいですが、慣れると手放せなくなります。TouchTerm系はOpenSSHベースだそうでPutty系の他のiPhoneのSSHクライアントよりもパフォーマンスが良いらしいんですよね。その辺りの説明はまた近いうちに。


