xckb的雑記帳

身の回りにあったことを雑多に語ります。

iPad Pro 10.5を買ったのでSSHクライアントアプリを選ぼう

(2019年1月19日追記)こちらの内容、そろそろ書いてから1年半が経ち、現状に合わなくなっているので、アップデート版を書きました。頃合いもよくiPad Pro 11インチを購入したので、そちらで評価しました。

xckb.hatenablog.com

一応、以下の古い記事も記録として残しておきますが、内容については上記の記事の方をご覧ください。



(以下、古い記事です)

さて、突然ですがiPad Pro 10.5インチの256GBセルラータイプを買ったのですよ。おまけにSmart Keyboardの英語(US)版にApple Pencilもつけました。今までiPadはmini 3を使ってきたのですが、画面は体感で倍近い印象で大きいし、Netflixを再生したりすると音響が圧倒的に違うし、まあ多少重いんだけれどもまあこれはこれでとても良いと思います。

f:id:xoc:20170615164337j:plain

そしてiPad mini3はWi-Fiモデルでしたがこれはセルラーモデルなので、やっぱりどこでもすぐにネットに繋がるのは便利ですね。使い方が変わります。そんなわけで、結構限られた用途に利用していたiPad mini3と違い、これからこいつをいろんな道具として使っていこうと思うのですが、とりあえず必要なのはSSHのクライアントかな。と。


…ここで「SSHのクライアントって何?」って思ってしまうようなカタギの方は、もうここでそっ閉じしていただいて結構です。ごきげんよう。


結構有料のものが多いiOS用SSHクライアントソフトですが、ここではこのSmart Keyboardとともに使う、ということを前提にApp Storeで自腹で沢山買い込んでみて、私なりの視点で評価してみました(無料版と有料版があるものは、きちんと評価対象とするものはすべて有料版を購入して評価していますが、流石に少々懐が痛みました…)。

お節介なオートコレクト系を禁止

…と、その前に、SSHクライアント以前の問題として、iOSのキーボード関連のおせっかい機能を全部禁止しましょう。たとえば勝手にフォームの最初の1文字が大文字になってしまったりするあれが鬱陶しくて仕方がないのですが、ハードウェアキーボードでは鬱陶しさ数倍増しです。ソフトウェアキーボードだとあれはShiftキーのタップで小文字に戻せるのですが、ハードウェアキーボードでは戻す方法がわかんないんですよ。戻す方法をご存知の方は教えて欲しい気もしますが、既にこんな機能切ってしまったので知らなくてもいいや(追記:なんと、⌘-Zで直せるという情報をいただきました。ありがとうございます)。正しく書いたはずの略語などをどんどん「修正」してくれる、あの過剰防衛っぽいスペルチェックとかも超鬱陶しいです。

ということで、まずは「設定 > 一般 > キーボード」で、自動修正、Caps Lockの使用、自動大文字入力、スペルチェック、予測、ピリオドの簡易入力などをまとめて切ります。まあ、ソフトウェアキーボードの時にはこれらは鬱陶しくないという向きの方にはこちらはそのままでもいいかもしれません。

f:id:xoc:20170615130105p:plain

そして、ハードウェアキーボードを接続し、使えるようにした状態で、「設定 > 一般 > キーボード > ハードウェアキーボード」から、自動大文字入力、自動修正、ピリオドの簡易入力などを切ります。英語キーボードの場合、「Caps Lockで英字モードと切り替え」はオンにしておいたほうがなにかと便利です(Ctrll-SPCが利用できるSSHクライアントで日本語に切り替える時にこれが使えるため)。多分、日本語キーボードでは必要なさそうなので、この項目は存在しないかもしれませんね。

f:id:xoc:20170615073705j:plain

さてこれで準備ができました。

比較の前提・比較項目

そもそも比較するにあたって、

  • 公開鍵認証が利用できること

は大前提です。今時、iOSのアプリからログインさせるためだけの理由で、SSHサーバでパスワードログインを有効化させるなんて、ありえません。また、

  • ハードウェアキーボードで利用できること

も大前提です。ただし、もしかすると日本語キーボードで不具合を起こすアプリもあるかもしれませんが、それは私の英語キーボード環境では検証できないので評価していません(あとで理由は述べますが、なんとなく、vSSH HDは日本語キーボードでの動作が怪しいのではないかという予感があります)。

そして、これらのアプリをテストしていく上で、どんな点を評価するかとして、次のような項目を設定しました。

  • 日本語の表示・編集・入力が可能か
    • 日本語の扱いに関しては、「表示」「編集」(カーソル移動、文字削除などが正常にできる)「入力」(iPad側のかな漢字変換で入力できる)のどこまで可能かが問題です。もちろん、全てできるのが最高ですが、実際の所私がSSHでログインした時のかなりの場合は、表示さえできれば問題ないということが多いです。なお、サーバ側の文字コードはUTF-8を想定しています。
  • ローカルでの公開鍵生成が可能か
    • 公開鍵認証を行う時は、少なくともiOS上のSSHクライアントアプリ側で秘密鍵を持つ必要があります。この場合、どこかで公開鍵・秘密鍵のペアを生成し、そのうち秘密鍵を何らかの方法でiOS上のアプリに持ってくる方法(もちろん、公開鍵を別途サーバに持っていく作業も必要)と、iOSアプリ上で公開鍵・秘密鍵のペアを生成し、公開鍵を何らかの方法でサーバ側に持っていく方法の2種類があります(前者後者の両方サポートするソフトもありますが、多くは前者だけをサポートします)。前者の方法では、本来秘密であるべき秘密鍵を、ネットワークストレージやクラウド上のノート・メモ的アプリ、メール、あるいはiTunesファイル共有などを用いてiOSデバイス上に転送する必要がありますが、ちょっと心配です(特にメール)。後者であればもともと大した秘密ではない公開鍵を転送するだけで済むので、かなり気が楽です。
  • Agent Forwarding (Key Forwarding)が可能か
    • 私はあまり好きな機能ではないので普段使ってはいませんが、せっかく公開鍵認証ができるのであればAgent Forwarding(Key Forwarding)ができると嬉しいという人も多いと思われますので、一応評価対象に入れてみます。
  • ポートフォワーディングが可能か
    • こちらもせっかくSSHを使えるのであれば、ポートフォワーディングしたい向きもあるかと思いますので評価項目に入れておきます。
  • パスコード・Touch IDでアプリを守ることが可能か
    • SSHクライアントアプリにアクセスする際に、パスコードやTouch IDでアプリを守ることができると少し安心です。特にアプリ切替時にも保護が効くと、接続中のセッションに第三者が触れることがかなり難しくなるため、有効だと思います(というより、アプリ切替時にこれが効かないと、ほとんど意味がありません)。
  • バックグランド動作時に接続が切れる前に通知を出すか
    • iOS上の多くのSSHクライアントアプリは、他のアプリに切り替えられた後も一定時間バックグラウンドで動作し、コネクションをサポートし続けます。この一定時間が切れる前に、警告通知してくれる機能が多くのアプリでは提供されています。
  • Caps Lockの機能を切り替えられるか
  • Ctrl-SPCが使えるか
    • 現在のiOSでは、Ctrl-SPCは日本語などの入力切替にバインドされており、emacsなどの一部エディタでのキーバインドと衝突します。これが無理なソフトでも、画面上に表示されるCtrlキーをタップしてスペースキーを押せば、一応同等のことは可能です。
  • ESCが押しやすい位置にあるか
    • 画面上のESCキーは、やはり左端付近にあって欲しいと思います。
  • ショートカットからの同一ホストに対する複数セッションが開始できるか
    • ほとんどすべてのiOS用SSHクライアントソフトでは、ホスト情報などを登録してショートカットメニューから接続先を選んでログインします。ここで、あるホストにログイン済みの時、もう一度同じメニューを選んだ際に、新しくもう一つセッションを開くアプリと、既存のセッションにフォーカスするアプリの2種類があります。もちろん後者でも、ログインした先でscreenなどを使えば複数セッションを使うことが可能ですが、前者の方がなにかと嬉しいです(開いている複数コネクションの選択機能は、前者のアプリでも必ず何らかの手段で提供されているため)。
  • 有料版、Pro版の価格
    • 上記をどの程度満たしているかを把握した上で、価格は重要な判断材料になるかと思います。

その上で、App StoreをSSHで検索して上位に出てきた次のアプリを評価してみました。

  • Prompt 2
  • SSH Terminal / SSH Term Pro
  • Termius (+Premium)
  • vSSH HD Lite / vSSH HD
  • Shelly (+Pro)
  • iTerminal / iTerminal Pro
  • WebSSH Essential / WebSSH Pro

このうち最後の2つは、次の理由により最終的な評価に至りませんでした。

iTerminal / iTerminal Pro

無料版のiTerminalを試してみましたが、ハードウェアキーボード使用時に色々と難ありだったため、評価できませんでした。特に、入力行が最下行に行くと見えなくなってしまったり、Ctrlキーなどの修飾キーが使えないなどの問題があり、今回の評価の前提に合いませんでした。レビューによれば、ソフトウェアキーボードでの利用であれば問題ないようです。

iTerminal - SSH Telnet Client

iTerminal - SSH Telnet Client

  • ComcSoft Corporation
  • ユーティリティ
  • ç„¡æ–™

iTerminal Pro – SSH Telnet

iTerminal Pro – SSH Telnet

  • ComcSoft Corporation
  • ユーティリティ
  • Â¥720

WebSSH Essential / WebSSH Pro

公開鍵認証の機能があるものの、少なくとも私が試した限りではうまく動作しなかったので、今回の評価の前提に合いませんでした。また、評価に直接関係しませんが、無料版に出てくる広告が全画面を覆い、キーボードの動作を妨げる上に騒々しいゲームの動画を音声つきで見せつけられ、しかも一定時間消せません。おそらく有料版ではそのような広告は消えると思われますが、端末ソフトの体験版に入れるべき広告としては不適切だと感じ、印象が悪くなりました。

WebSSH Essential

WebSSH Essential

  • Arnaud MENGUS
  • ユーティリティ
  • ç„¡æ–™

WebSSH Pro

WebSSH Pro

  • Arnaud MENGUS
  • ユーティリティ
  • Â¥600

各アプリの評価

さて、ではその他の5つのアプリについて、それぞれ評価してみたいと思います。

Prompt 2

日本語対応の唯一のiOS SSHクライアントアプリ、との評判を聞いていたのですが、1,800円という価格が少々相場よりかなり高い印象です。確かに日本語の表示、編集、入力のすべてが可能ですが、編集と入力を正常に行いたい場合は、画面の表示フォントを「Migu 2m (Japanese)」に設定する必要があります。また、今回調べたところ、後述のShellyやvSSH HDも日本語の表示、編集、入力のすべてが可能なため、少なくとも現在では唯一の日本語対応iOS SSHクライアントアプリではありません(ただし後述の通り、vSSH HDに関しては日本語入力に関して多少問題があります)。

f:id:xoc:20170616181341j:plain

一方、文字コード設定メニューにはシフトJIS、ISO-2022-JPやEUC-JP等の、UTF-8ではない日本語文字コードの項目があり、これらの文字コードを利用できるのはこのアプリだけとなっています。どうしてもそういうサーバで日本語を利用したいのであれば、このアプリは唯一の選択肢となるでしょう(私はそのようなサーバを利用していないため、テストはできません)。

PINコードとTouch IDでSSHのセッションを守る機能を持っており、アプリケーションの切替時にも正しく機能するのは良い点です。それ以外に関しては、バックグラウンド動作やセッション切れ警告などの一般的な機能は持っています。Ctrl-SPCは入力モード切り替えのままになっており、接続先ホストにCtrl-SPCを入力するためには画面上のCtrlボタンをタップしてからスペースを押す必要があったりする点も、一般的と言えば一般的です。

登録したショートカットから複数のセッションを開くことはできない点などは、ちょっとマイナス印象です。Agent Forwardingもサポートされているようで設定項目もあるのですが、テストした限りではうまく動きませんでした。

価格に関しては、初代「Prompt」の時に結構な値段で買ったら、「Prompt 2」になった時に、アップグレードパスもない状態でさらに結構なお値段で出てきた記憶もあり、少し印象がよくありません(その時は結局アップグレードしなかったのだけれども、今回比較のために買ってしまいました)。また、体験版的な無料版は、残念ながら無いようです。

全体的な印象としては、日本語がきちんと使えるのはいいですが、やはり価格が高いという印象が否めません。

Prompt 2

Prompt 2

  • Panic, Inc.
  • ユーティリティ
  • Â¥1,800

SSH Terminal / SSH Term Pro

こちらは廉価版のSSH Terminal(現在120円)と通常版のSSH Term Pro(現在600円)がありますが、公開鍵認証などはPro版しかできない点や、画面の印象も異なるなど、かなり別物感のある2つのアプリとなっています。今回の評価の前提条件に合うものはPro版のみのため、Pro版のみを評価します。

f:id:xoc:20170616181501j:plain

まず日本語に関しては、日本語の表示は可能だが入力や編集はできない状態になっており、エディタで日本語ファイルを扱うとカーソル位置が狂ってしまいます。また、バックグラウンド動作は可能のようですが、設定項目はありません。

f:id:xoc:20170615162259j:plain

ショートカットからの同一ホストに対する複数セッションは不可能で、Ctrl-SPCは入力切替ではなく謎のキャラクタが入力されます。Emacsからは認識されません。

公開鍵をローカルで生成可能なのは良い点です。

全体的には、日本語サポートが良くないにもかかわらず、そのマイナス点を補ってくれるような特筆すべき機能もない、という印象です。

SSH Terminal

SSH Terminal

  • Jayanti Katariya
  • ユーティリティ
  • Â¥120

SSH Term Pro

SSH Term Pro

  • Jayanti Katariya
  • ユーティリティ
  • Â¥600

Termius (+Premium)

このTermiusというアプリは、無料版でもかなり使えるという印象のあるアプリで、有償版はかなり高価(現在毎年1,150円)となっていますが、そちらを購入しなくてもかなりきちんと使えます。そのため、このアプリに関してはまずは無料版をベースに評価します。

f:id:xoc:20170616181558j:plain

とは言っても、残念ながら日本語のサポートは弱いです(これが大きなウイークポイントです)。上記の基準から言うと日本語は表示のみのサポートとなります。公開鍵のローカル生成、指先でのカーソル移動やスクロールなどもできる上に、Port Forwardingの機能なども無料版で提供されているようです(しかし、Port Forwardingの機能を試してみたのですが、残念ながら私の環境では動作を確認できませんでした)。

公開鍵認証に関しての注意ですが、ローカルで鍵を生成した場合、パスフレーズが自動的に記憶されてしまいます。これは少し考えものなのでパスフレーズの記憶を抜くのですが、その際にもパスフレーズの入力が必要なので少し混乱します(理由は考えればわかりますし、動作自体は問題ありません)。また、PINコードで端末画面を守れますが、短時間の場合は効かないこともあるようです。

ESCキーの位置は左端から少し右に寄っていてちょっと微妙ですが、Ctrl-SPCは本来の意味で使えます。ショートカットからの1ホストに対する複数セッションの起動はできません。また、起動時、接続時などに突然落ちる場合があります。

ですが、無料版としてはかなり高機能のため、比較的おすすめできると考えます。

Premium版は先述の通り毎年1,150円の課金ですが、次のような機能が追加されます。

  • SFTP client
  • Client-side encryption (AES-256)
  • Secure data synchronization across all your devices
  • Sail through active session with terminal Tabs
  • Snippets: Save sets of commands and automate them
  • Agent forwarding
  • PIN code data protection with Touch ID support
  • Use the CLI to export the ~/.ssh/config from desktop

興味深いのはSSH agent forwardingができる件かな。SFTPクライアントはアプリのローカルストレージとのやりとりになるので、便利な使い方はホストAからホストBにデータをやりとりする程度しか思いつかない。

f:id:xoc:20170616181700j:plain

PINに加え、Touch IDが使えるようになるのは便利です。しかし時々起動時や接続時に落ちるのは変わらない…(これは私の環境に依存した問題かもしれませんが、日本でiPadを使っているユーザーとしては比較的標準的な環境だと思っています)。

毎年1,150円の価値があると考えるかは人次第。これで日本語が使えればいいんだけれどな…。

Termius - SSH client

Termius - SSH client

  • Crystalnix
  • ユーティリティ
  • ç„¡æ–™

vSSH HD Lite / vSSH HD

こちらのアプリは、無料版と有料版の機能の差が少ないのが大きな特徴です。無料版は広告が出るうえに、接続先の登録数などに制限があるようです。あと、無料版のほうがやや画面が小さくなります(私は有料版の方で主に試用を行いました)。その他はほとんど全機能が無料版でも利用可能のようです。なので、以下の比較は無料版と有料版の双方に当てはまります。有料版は現在のところ600円。

f:id:xoc:20170615005940j:plain

日本語に関しては表示、編集は可能ですが、iPad側のかな漢字変換でハードウェアキーボードから入力することは無理なようです。ソフトウェアキーボードでは日本語入力ができるので、どうしても日本語を入力したい時はソフトウェアキーボードや他アプリからのコピー&ペーストで対応可能です。

今回試したアプリの中で、このvSSH HDが唯一持っていた機能は、Caps Lockキーのカスタマイズ機能です。もちろんCtrlに設定することも可能で、ハードウェア英語キーボードを使いやすくするにはとても嬉しい機能です…と言いたいのですが、残念ながら私の環境ではCtrlとしてたしかに動作するものの、同時にCaps Lockとしても働いてしまいます。

Ctrl-SPCも本来の働きをするので、もしCaps Lockの動作が修正されれば、キーボード関係の自然さとしては、今回取り上げた中でこのアプリが一番となることは確実なだけに残念です。あまりに惜しすぎるので、バグレポートしようか…。

また、ショートカットから同一ホストへの複数セッションも可能です。全体的に、非常に設定可能な項目が多く、きめ細やかなカスタマイズができるようになっています。

Agent ForwardingやPort Forwardingも可能です。Port Forwardingに関しては、TermiusではLocalとRemoteのみでしたが、このアプリではDynamic(Socks Proxy)も対応しています。ただし、Socks Proxyに対応したiOSアプリが見つからなかったので、動作検証は出来ませんでした。

f:id:xoc:20170616181721j:plain

ちょっと注意が必要なのは、画面上の特殊キー(ESC等)をハードウェアキーボード使用時に利用するには設定が必要な点です(Extended Keyboardを"On-screen & External Keyboard"に設定する)。また、公開鍵のローカル生成はできません。

https://itunes.apple.com/jp/app/vssh-hd-lite/id535056241?mt=8&uo=4&at=11lsU9

https://itunes.apple.com/jp/app/vssh-hd/id530136764?mt=8&uo=4&at=11lsU9

Shelly (+Pro)

割とダークホース的な感じです。体験版でも設定画面からポチッとすると14日間フル機能が使えるところも良いと思います。フル機能版はアプリ内課金で480円とこれまたリーズナブル。

値段の件は置いておいても、Prompt 2と並んで日本語の表示、編集、入力が全て問題なく行える上に、Ctrl-SPCが本来の働きをします(emacsからも正常に利用できる)。事前に、Prompt 2くらいしか日本語がまともに使えるアプリはないと聞いていたので、少しびっくりしました。

f:id:xoc:20170616181740j:plain

公開鍵はローカルで生成可能で、パスコードやTouch IDで端末画面を守ることも可能です。さらにショートカットからの同一ホストに対する複数セッションも可能で、さらにゼスチャーでのスクロールやカーソル移動もできるようになっています。

Agent Forwardingに関しては設定項目があるのですが、実際に利用しようとするとアプリが落ちてしまいました。バグでしょうか。

他のアプリと比較した場合のマイナス点は、バックグラウンド動作の終了前に通知をもらえないことです。これは他のどのアプリでも利用可能な機能であるだけに惜しいところです。

Shelly - SSH Client

Shelly - SSH Client

  • Touch Foo
  • 仕事効率化
  • ç„¡æ–™

総合評価

ということで結構みんな一長一短があって選択が難しいのですが、基本的な項目を表にまとめてみました。◯は利用可能、△は利用可能となっているが実際には何らかの問題で私の環境では利用できなかったもの、☓は利用不可なものを指します。

アプリ名 Prompt 2 SSH Term Pro Termius Premium vSSH HD Shelly Pro
日本語表示 ◯ ◯ ◯ ◯ ◯
日本語編集 ◯ ☓ ☓ ◯ ◯
日本語入力 ◯ ☓ ☓ △ ◯
ローカル鍵生成 ☓ ◯ ◯ ☓ ◯
Agent Forwarding △ ☓ ◯ ◯ △
Port Forwarding ☓ ☓ △ ◯ ☓
PIN, Touch ID ◯ ☓ ◯ ☓ ◯
BG警告通知 ◯ ◯ ◯ ◯ ☓
Capsカスタム ☓ ☓ ☓ △ ☓
Ctrl-SPC ☓ ☓ ◯ ◯ ◯
ESC位置 ◯ ◯ ☓ ◯ ◯
同一ホスト接続 ☓ ☓ ☓ ◯ ◯
有料版価格 1,800円 600円 1,150円/年 600円 480円

考えた結果、総合評価として、私が今後使っていくのはvSSH HDということにしたいと思います。なにより、幅広いカスタマイズ範囲などがとても魅力的です。Caps Lock関係のバグ?は修正されることを期待したいので、バグレポートして直ることを期待したいと思います。公開鍵のローカル生成がない点に関しては、気をつけて秘密鍵を扱うこととして、またPINやTouch IDがサポートされない点に関しては、そもそもコネクションを開いたままで放置しないということを徹底することで対応したいと思います。

https://itunes.apple.com/jp/app/vssh-hd/id530136764?mt=8&uo=4&at=11lsU9

ハードウェアキーボードが日本語入力に対応しない問題ですが、単に日本語の短いフレーズをいくつか入力する程度であれば、vSSH HDでもソフトウェアキーボードや他のアプリからのコピー&ペーストで日本語を入力可能なため、それほど大きな問題にはなりません。私の使い方では、SSHのセッションで日本語の長文を書くことはありません。

ただし最初に書いた通り、私はvSSH HDは日本語ハードウェアキーボードでの動作が怪しい可能性があるとの疑念を持っているので(疑念の理由は、Caps Lockのカスタマイズが可能な点と、ハードウェアキーボードによる日本語入力がなぜか不可能である点から、少し低いレイヤでキーボードに触っている気がするからです)、もしその疑惑が白でも黒でも情報をいただけると幸いです。いや英語キーボードユーザの私の環境には関係ないんですが。

vSSH HDに欠けた機能であるところの、公開鍵のローカル生成やPIN, Touch IDをサポートしているShelly Proも随分悩んだのですが、バックグラウンドの警告機能がないのはやはり大きなマイナスポイントです。たとえばSSHを裏に回して、ブラウザで資料を検索している間にいつの間にかセッションが閉じている…とかいう事態は、できるだけ避けたいものです。

Shelly - SSH Client

Shelly - SSH Client

  • Touch Foo
  • 仕事効率化
  • ç„¡æ–™

無料版のみで評価するのであれば、vSSH HD LiteとTermiusがいい線をいっていると思います。でもやはり私の好みとしてはvSSH HD Liteですかね。

https://itunes.apple.com/jp/app/vssh-hd-lite/id535056241?mt=8&uo=4&at=11lsU9

Termius - SSH client

Termius - SSH client

  • Crystalnix
  • ユーティリティ
  • ç„¡æ–™

頑張って検証したつもりではありますが、もし、評価項目が間違ってる等のご指摘がありましたらお知らせください。