iPhoneやiPadからリモートメンテナンスなどできたり、CUIでメール読めるといいなぁと思い、 幾つかSSHクライアントを試してみました。希望としては以下のことができるSSHクライアントが欲しかったわけです。

  • SSH鍵で認証できる
  • 既存のSSH鍵をインポートして使える
  • SSHトンネリングが使える

iPhone/iPad用SSHクライアント

SSHクライアントにはこんなのがあるそうです。どれも有償だったり値段も高めですよね。

アプリ名価格SSH鍵生成鍵importトンネル
SSH450円×××
TouchTerm SSH450円××
TouchTerm Pro SSH1000円×将来予定?
iSSH1200円×△X,VNCのみ?
pTerm SSH600円×
SSH-Terminal115円×××
SSH Term Pro350円○?○??×
結局外部のSSH鍵のインポートに対応しているアプリが少なくて、まともにサポートをうたっているのはTouchTerm Pro SSHのみというお寒い状況です。自分が使っているホストはほとんどID/PW認証はダメでSSH鍵による認証しか許可されてないので、まぁ、仕方なくTouchTerm Pro SSHを購入してみました。TouchTerm Pro SSHはSSHポートフォワーディングは使えませんが、インポートされたSSH鍵を使う事の方が優先されるのであきらめました。

鍵のインポートでハマる

マニュアルなんか読まなくても鍵のインポートぐらいできるだろうとタカくくってたんですが。結果、そんなに甘くなかったです。その紆余曲折っぷりを書いておきます。

まず、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ヘッダ、フッタを除いたもの
をやってみましたが、 鍵の名前を入力しないままだと 「Error Importing Key - Please enter a valid Key Name」 と表示されたので、適当な名前を入れ鍵のインポートを試みるも 「Error Importing Key - Could not load private key; please verify that you are loading a valid ssh key file, and that the passphrase is provided (if required).

こりゃもう埒があかなそうなので、仕方なく マニュアルを読んでみることにしました。 ssh秘密鍵をインポートすることの危険性や言い訳みたいなことが つらつら書いてありますが、やりかたはこんな感じ。

【注意】
TouchTerm Pro SSHでインポートされたRSA鍵を利用できるようにするには RSA鍵でなくIDパスワードでログイン可能なSSHサーバーが必要になります。 「んなアホな?」と思うかもしれませんが仕様ですorz。 サーバーの設定を暫定的に変更するなり、 別のIDパスワード認証対応のSSHサーバーを用意するかして下さい。
  1. IPパスワードでログインできるsshサイトにログインする。
  2. そこに秘密鍵を置いておく。
  3. cat ~/.ssh/id_rsa などでターミナルに秘密鍵をテキスト表示する。
  4. TouchTerm Pro SSHの機能により表示されているか鍵をコピーする。
    1. 指二本で押さえるとコピー選択領域の開始と終了が拡大表示されるので、希望の開始位置、終了位置に合わせる。
    2. これが結構難しい。文字サイズが小さくてやりにくい場合には、画面を下から上へなぞると文字サイズが大きくなる。
    3. 開始終了がうまく設定できたら画面の左上を一回タップする。すると[1]のように表示される。デフォルト設定ではこれはコピー操作。
  5. セッションの設定のところから歯車(Settings)を開きSSH KeyのところからNew SSH Keyを開く。
  6. 鍵の名前入れる
  7. パスワード付きのRSA秘密鍵(PKCS#1)ならばパスワードを入れておく
  8. 「Import Key from Clipboard」をクリック。
  9. 鍵がちゃんとインポートされ、使えるようになる。

既存のSSHの設定変えて鍵なしIDパスワード認証を許すのが嫌な場合には、どこかローカルにSSHサーバーを立てるのがよいでしょう。Windowsならば freeSSHdがおススメなので過去のブログ記事を参考にしてみてください。

これで、鍵を使ってSSHログインできるようになったはず。どうでしょうか?Touch Term Pro SSHは最初はゼスチャーがとっつきにくいですが、慣れると手放せなくなります。TouchTerm系はOpenSSHベースだそうでPutty系の他のiPhoneのSSHクライアントよりもパフォーマンスが良いらしいんですよね。その辺りの説明はまた近いうちに。