xckb的雑記帳

15年ほどWeb日記をつけ続けていたのですが2012年で一旦休止、1年半ほど休んで新天地でぼちぼちのんびりまた始めてみることにしました。

iPad Pro 11インチ+キーボードで評価するiOS用SSH/Moshクライアント

さて、飽きもせずにiPad Proの11インチ(セルラーモデルの256GB)を購入しました。あと専用ハードウェアキーボードとしてSmart Keyboard Folioも一緒に。以前使っていた10.5インチiPad Proと比較すると、本体も実に良い感じだし、キーボードも地味に色々改良されていて、これならギリギリ膝の上でも使えます(10.5インチは無理だった…)。

f:id:xoc:20190119022632j:plain

コネクタもUSB Type-Cになったおかげで、Macbook用のVGAやHDMIアダプタがそのまま使えて、さらにそこに有線のUSB Ethernetとか挿すと、こちらも普通に使えてしまいます。これは良いですね。

そして、可能な限りiPadで全てを済ませ、できるだけMacbook系に頼らない体制にしていきたいと考えている上で、やはりSSHクライアントは必要です。同じ理由で以前10.5インチを買ったときに以下の記事を書いたのですが、こちらの記事もそろそろ内容が古くなってきたので、アップデートしないといけないな、と以前から思っていました。特に上の記事で一推しにしたvSSHが無くなってしまったこともありまして…(いいアプリだったのに)。

xckb.hatenablog.com

というわけで、今回は上の記事のアップデートという位置づけで書いてみようと思います。…まあ、ここまでで「SSHのクライアントって何?」って思ってしまうようなカタギの方は、もうここでそっ閉じしていただいて結構です。ごきげんよう。

今回の記事の目次です。

結構有料のものが多いiOS用SSHクライアントソフトですが、ここではこのSmart Keyboardとともに使う、ということを前提にApp Storeで自腹で沢山買い込んでみて、私なりの視点で評価してみました(無料版と有料版があるものは、きちんと評価対象とするものはすべて有料版を購入して評価していますが、流石に少々懐が痛みました…)。以前の評価時よりも色々アプリが増えており、またMosh(Mobile Shell)をサポートするものも出てきているようなので、そのあたりを含めて評価をやり直すこととしました。

事前準備

というわけで、iPad+ハードウェアキーボードでSSH/Moshクライアントを利用するための下準備です。

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

まずはiOSのキーボード関連のおせっかい機能を全部禁止しましょう。たとえば勝手にフォームの最初のアルファベット1文字が大文字になってしまったりするあれ、鬱陶しいですよね。

ソフトウェアキーボードだとあれはShiftキーのタップで小文字に戻せるのですが、ハードウェアキーボードでは戻す方法がわかんないんですよ。戻す方法をご存知の方は教えて欲しい気もしますが、既にこんな機能切ってしまったので知らなくてもいいや(追記:どうやら⌘-Zで元に戻せるらしいという情報をいただきました。ありがとうございます)。正しく書いたはずの略語などをどんどん「修正」してくれる、あの過剰防衛っぽいスペルチェックとかも超鬱陶しいです。なのでソフトウェアキーボードを含めて全部禁止してしまいましょう。

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

f:id:xoc:20190119023440j:plain

そして、ハードウェアキーボードを接続し、使えるようにした状態で、「設定 > 一般 > キーボード > ハードウェアキーボード」から、自動大文字入力、自動修正、ピリオドの簡易入力などを切ります。

f:id:xoc:20190119023450j:plain

日本語のフリック入力ができない件

SSHやMoshには直接関係ないのですが、11インチiPadにはもう少し困った入力周りの問題があります。なんと、たったの0.5インチの違いですが、11インチでは(12.9インチiPad Pro同様に)スクリーンキーボードのスプリットができないため、日本語キーボードがスプリットされた場合に限り使えるようになっていたテンキー形式でのフリック入力ができなくなっているのです。どう考えても11インチは10.5インチの後継なんだから、そこで12.9インチに寄せなくてもいいのに。

これはこれでとても不便なのですが、そもそもiPadの標準日本語かなキーボードが、スプリットとフリック入力という全然関係ない機能を抱き合わせにしているのがおかしいんだよね。困った…。

と思ったのですが、サードパーティキーボードとしてATOKを入れれば解決するという情報が。

ATOK -日本語入力キーボード

ATOK -日本語入力キーボード

  • JUSTSYSTEMS CORPORATION
  • ユーティリティ
  • ¥1,600

ATOKは標準的なローマ字入力キーボードと、テンキーを切り替えできるようになっていて、テンキーにすれば常にテンキーです。標準のキーボードもこうあるべきだよね。割と使いやすかったのでiPhoneの方のキーボードもATOKに変えてしまいました(iPhoneとiPadの両方で微妙に違うと混乱するので)。

ただ、標準の位置だと新iOSのゼスチャーと一番下のフリックがかぶるので、ほんの少しだけテンキーキーボードを上にずらすと良いと思います(ATOKアプリの「設定→キーボードのスタイル・デザイン→サイズ・位置」で位置を調整可能です)。ついでに、「キーボードのスタイル・デザイン」で、スタイルを「Style-フリック」に変え、「フリックのみ」はON(デフォルトです)、「カーソルキーの表示」はOFFにしました。

f:id:xoc:20190119095617j:plain

これで、今まで10.5インチでフリック入力を使っていた人も、わりと違和感なく使えるのではないでしょうか。今回の評価に関しても、ATOKを含むサードパーティキーボードで日本語入力できるかについてテストを行っています。

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

比較の前提・比較項目

そもそもSSH/Moshクライアントアプリを比較するにあたって、

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

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

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

も大前提です。ただし、もしかすると日本語キーボードで不具合を起こすアプリもあるかもしれませんが、それは私の英語キーボード環境では検証できないので評価していません。また、専用キーボードの利用を前提としているので、画面を縦にしないと利用できないアプリは評価の対象としていません(有料版を買ってからこれに気がついて評価から外したアプリが複数…)。

そして、これらのアプリをテストしていく上で、どんな点を評価するかとして、次のような項目を設定しました。今回あらたに追加した評価項目には「(今回追加)」と記しておきます。

  • 日本語の表示・編集・入力が可能か
    • 日本語の扱いに関しては、「表示」「編集」(カーソル移動、文字削除などが正常にできる)「入力」(iPad側のかな漢字変換で入力できる)のどこまで可能かが問題です。もちろん、全てできるのが最高ですが、実際の所私がSSHでログインした時のかなりの場合は、表示さえできれば問題ないということが多いです。なお、サーバ側の文字コードはUTF-8を想定しています。
  • サードパーティキーボードの利用は可能か(今回追加)
    • 今回はATOKで日本語のテストを行ったのですが、一部にサードパーティキーボードの利用ができなかったり、利用するには設定が必要なアプリがあります。
  • Mosh(今回追加)
    • 厳密にはSSHクライアントの評価とは言えませんが、Mosh (Mobile shell)に対応しているSSHクライアントアプリも増えてきています(Moshに対応しているアプリでSSHに対応していないものはないでしょう)。Moshで接続することで、SSHをiPadから利用する場合の問題点を多く解決できます。たとえば、バックグラウンド動作に移ってそれなりに長い時間がたってももセッションは切れませんし(これは大きい)、LTEとWifiで接続が変わったら、適切な通信経路に自動的に切り替わります。また、遅い回線でもコマンドラインを快適に使用可能です。これらは、iPad利用者には重要な機能と言えるでしょう。
  • ローカルでの鍵生成が可能か
    • 鍵認証を行う時は、少なくともiOS上のSSHクライアントアプリ側で秘密鍵を持つ必要があります。この場合、どこかで公開鍵・秘密鍵のペアを生成し、そのうち秘密鍵を何らかの方法でiOS上のアプリに持ってくる方法(もちろん、公開鍵を別途サーバに持っていく作業も必要)と、iOSアプリ上で公開鍵・秘密鍵のペアを生成し、公開鍵を何らかの方法でサーバ側に持っていく方法の2種類があります。前者の方法では、本来秘密であるべき秘密鍵を、ネットワークストレージやクラウド上のノート・メモ的アプリ、メール、あるいはiTunesファイル共有などを用いてiOSデバイス上に転送する必要がありますが、ちょっと心配です(特にメール)。後者であればもともと大した秘密ではない公開鍵を転送するだけで済むので、かなり気が楽です。今回はこの機能の可否だけではなく、どのような種類の鍵を生成可能かについても調査しました。
  • エージェントフォワーディング (キーフォワーディング)が可能か
    • 私はあまり好きな機能ではないので使ってはいませんが、せっかく鍵認証ができるのであればエージェントフォワーディング(キーフォワーディング)ができると嬉しいという方も多いと思われますので、一応評価対象に入れてみますが、今回新たに評価対象に入れた踏み台経由の接続機能のほうがおすすめだと思います。
  • 踏み台経由の接続(今回追加)
    • OpenSSHでは、コマンドラインや~/.ssh/configに、-Wを追加したsshをproxyCommandオプションに設定することで、一気に踏み台の先のホストまでログイン可能です。これと同様の動作を実現する機能についてです。
  • ポートフォワーディングが可能か
    • こちらもせっかくSSHを使えるのであれば、ポートフォワーディングしたい向きもあるかと思いますので評価項目に入れておきます。利用できる場合は、ローカル、リモート、ダイナミックのどのポートフォワーディングが可能かをまとめました。
  • プロキシ経由の接続(今回追加)
    • イントラネット内からの接続の場合、プロキシ経由で接続する必要があるかも知れません。プロキシ経由の接続が可能か、可能であるならばどのようなプロキシ経由で接続可能かを評価しました。
  • PINの桁数(今回追加)
    • ほとんどすべてのSSHアプリで、PINによるロック解除ができるようにになったので、有無は評価しないことにしましたが、このPINに何桁入力できるかについて評価を行いました。
  • PIN代わりにFaceID・TouchIDでロック解除できるか
    • PIN代わりにFaceIDやTouchIDでロック解除ができると楽ですし、場合によりますが盗み見が容易なPIN入力よりも安全であるとも言えます。
  • バックグランド動作時に接続が切れる前に通知を出すか
    • iOS上の多くのSSHクライアントアプリは、他のアプリに切り替えられた後も一定時間バックグラウンドで動作し、コネクションをサポートし続けます。この一定時間が切れる前に、警告通知してくれる機能が多くのアプリでは提供されています。これはSSHクライアントとしては重要な機能ですが、今回評価対象に加えたMoshによる接続が利用可能な場合は、それほど意味はありません。
  • Caps Lockの機能を切り替えられるか
    • 人によると思いますが、SSHクライアントから行いたい操作にはあまりCaps Lockの必要は少ない場合が多く、このキーをCtrlやEscに変更できるととても便利です。特に後者はiPadのハードウェアキーボードに存在しないキーなので重要です。
  • Ctrl-SPCが使えるか
    • 現在のiOSでは、Ctrl-SPCは日本語などの入力切替にバインドされており、Emacsなどの一部エディタでのキーバインドと衝突します。これが無理なソフトでも、スクリーン上のCtrlキーをタップしてスペースキーを押せば、一応同等のことは可能なアプリが多いようです。
  • スクリーン上のESCが押しやすい位置にあるか
    • ハードウェアキーボードにEscキー等の特殊キーがが存在しないので、多くのアプリはスクリーン上にこれらを表示しています。その中でも特にEscキーは、やはり左端付近にあってほしいと思います。
  • ショートカットからの同一ホストに対する複数セッションが開始できるか
    • ほとんどすべてのiOS用SSHクライアントソフトでは、ホスト情報などを登録してショートカットメニューから接続先を選んでログインします。ここで、あるホストにログイン済みの時、もう一度同じメニューを選んだ際に、新しくもう一つセッションを開くアプリと、既存のセッションにフォーカスするアプリの2種類があります。もちろん後者でも、ログインした先でscreenなどを使えば複数セッションを使うことが可能ですが、前者の方がなにかと嬉しいです(開いている複数コネクションの選択機能は、前者のアプリでも必ず何らかの手段で提供されているため)。
  • 有料版、Pro版の価格
    • 上記をどの程度満たしているかを把握した上で、価格は重要な判断材料になるかと思います。

比較対象アプリの選出

その上で、次の4つのアプリに絞って評価してみました。基本的に評価は有料版を基準に行っています(ただし、高価なうえに無料版の機能も多いTermiusは、適宜無料版の機能を参照しています)。

  • Prompt 2
  • Termius Premium
  • Shelly Pro
  • Blink Shell(今回追加)

その他、以下のアプリは試用したものの、様々な理由で比較対象から外しました(上の4アプリと比較して重要な機能がかなり足りない、縦方向でしか使えない、アプリの趣旨が異なる、などの理由です)。

  • Mocha Telnet
  • SSH Term Pro
  • K's SSH
  • iTerminal Pro
  • Cathode
  • LTerminal
  • TTerm
  • WebSSH Pro

ちなみに、前回の評価から変わった点としては、SSH Term Proは以前表示のみは可能だった日本語がついに表示不能となり、評価対象から外しました。前回も比較対象外としたWebSSH Proは、前回利用できなかった鍵認証が利用可能となっていたのですが、それでも機能が他のアプリと比較してかなり少なく、不便に感じたので、対象からは外したままです。

各アプリの評価

さて、では今回の対象とした4つのアプリについて、それぞれ評価してみたいと思います。

Prompt 2

最初、日本語対応の唯一のiOS SSHクライアントアプリ、との評判を聞いていました。確かに日本語の表示、編集、入力のすべてが可能ですが、編集と入力を正常に行いたい場合は、画面の表示フォントを「Migu 2m (Japanese)」に設定する必要があります。また、今回調べたところ、後述のShellyやBlink Shellも日本語の表示、編集、入力のすべてが可能なため、少なくとも現在では唯一の日本語対応iOS SSHクライアントアプリではありません。

f:id:xoc:20190119025418j:plain

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

PINコードとFace ID、Touch IDでSSHのセッションを守る機能を持っており、アプリケーションの切替時にも正しく機能するのは良い点です。それ以外に関しては、バックグラウンド動作やセッション切れ警告などの一般的な機能は持っています。

ただし、他の評価対象アプリがすべて対応している接続先へのキーボードからのCtrl-SPC入力はサポートされておらず、スクリーンキーボードのCtrlをタップしてからキーボードのスペースを押す必要があります。Emacs派の人にはお勧めできないかも知れません。

前回の記事を書いた際はエージェントフォワーディングは機能としてはあったものの、何らかの理由で利用できませんでしたが、今回は問題なく利用できました。

現在1,800円という価格に関しては、初代「Prompt」の時に結構な値段で買ったら、「Prompt 2」になった時に、アップグレードパスもない状態でさらに結構なお値段で出てきた記憶もあり、少し印象がよくありません。また、体験版的な無料版は、残念ながら無いようです。

ATOKを含むサードパーティキーボードからの利用には、別途設定が必要です。とはいえ、ターミナルから設定アイコンをタップして、キーボード設定の中にある「他社製キーボードの利用」を追加するだけなので大きな問題はありません。

実は今回の試用を開始したタイミングで、ハードウェアキーボードからの使用に大きな問題がありました。アプリの切り替えなどのタイミングで、画面が不適切なサイズでリサイズされてしまい、画面の一番下の数行が隠れてしまうのです。ですが、このバグはまさにテストを行っている最中のアップデートで修正されました。良かったです。

Prompt 2

Prompt 2

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

Termius (+Premium)

このTermiusというアプリは、無料版でもかなり使えるという印象のあるアプリで、もともと有償版はかなり高価でした。しかし、以前評価したときは毎年1,150円だったサブスクリプション料金が、なんと今は約6倍の値上がりをして、毎年6,700円(毎月払いだと780円/月)となってしまっています。まあ、そちらを購入しなくてもかなりきちんと使えますので、このアプリに関しては無料版も同様に評価します。

f:id:xoc:20170616181558j:plain

以前紹介した時は、日本語のサポートが表示のみで、その点は大きな弱点であると評価しましたが、現在は編集も問題なくでき、入力はかなり問題がありますができないことはない、という状態です。あと一歩ですね。

鍵のローカル生成、指先でのカーソル移動やスクロールなどもできる上に、ポートフォワーディングの機能なども無料版で提供されています。前回の評価時はポートフォワーディングの機能の動作を確認できなかったのですが、今回は問題なく動作しました。さらに、ローカル・リモート・ダイナミックの全てのタイプのポートフォワーディングが利用できるのは大きな特徴です。

また、HTTPプロキシ経由での接続が可能なのも、今回の評価対象アプリではこのアプリだけです(SOCKSプロキシの場合はこのアプリに加えて後述のBlinkでも接続可能ですが)。

そして何と言っても、Moshが使えるという点は大きな評価ポイントです。Moshが使えることで、バックグランドセッションの維持などの問題を全てMoshに任せることが可能となりますし、モバイル周りのさまざまな回線の問題をMoshが吸収してくれます。ただし、Moshサポートは現状ではβ版という扱いで、試用した限りでも、まれにうまく使えなくなることがありました(すぐに解消しましたが)。

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

ESCキーの位置は左端から少し右に寄っていてちょっと微妙ですが、カスタマイズでもう少し左に持っていけます。そしてCtrl-SPCはターミナル本来の意味で使えます。ショートカットからの1ホストに対する複数セッションの起動はできません。

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

Premium版は先述の通り現在毎年6,700円の課金ですが、次のような機能が追加されます(さすがに高価なアプリだけあって、約2週間のフリートライアルはあるようです)。

  • SFTP
  • Agent forwarding
  • ​Pass Environment Variables to SSH Session​
  • ​Chaining / Jump Hosts​
  • Discover Local Hosts (DNS service discovering)​
  • ​Store and Set Start-up Snippets​
  • Run Snippets in Active Sessions​
  • ​Port-knocking Snippets​
  • Autocomplete​
  • ​TouchID / FaceID / Fingerprint / Pattern Lock​
  • Location Tracking for Background Work​
  • ​Secure Synchronization with End-to-End AES-256​
  • ​2-Factor Support with Authy​
  • Tabs for Active Sessions​
  • Home Screen Widget for Quick Access to Hosts and Active Connections
  • ​Import Hosts from ~/.ssh/config​
  • Import from AWS / Digital Ocean
  • ​Save Session Log​

興味深いのはChaining(踏み台経由の接続)とTouchID/FaceIDでのロックが有償版に入っている点かな。正直後者は無償版にも入れてほしかったと思います。SFTPクライアントはアプリのローカルストレージとのやりとりになるので、便利な使い方はホストAからホストBにデータをやりとりする程度しか思いつきません。

f:id:xoc:20190119124957p:plain

これらの機能に毎年6,700円の価値があると考えるかは人次第。なんか、時々価格が変わっているみたいだけれども、いくらなんでも今の値段は高すぎるので、もう少し安くなることを希望します(安いタイミングでsubscriptionを購入すればそのままの価格で使い続けることができるようですので)。

まあ、お値段の面で色々悩ましいアプリですので、細かいところには目をつぶって、無償版を使うのがおすすめかも知れません。

Termius - SSH client

Termius - SSH client

  • Crystalnix
  • ユーティリティ
  • 無料

Shelly

体験版でも設定画面からポチッとすると約2週間無料でフル機能が使えるところも良いと思います(今回は既に以前に課金してあったので、フリートライアルの機能は試せませんでしたが、他のレビューによると現在もこの仕様のようです)。フル機能版はアプリ内課金で480円とこれまたリーズナブル。

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

f:id:xoc:20190119031128j:plain

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

エージェントフォワーディングに関しては設定項目があるのですが、実際に利用しようとするとうまくいきません。バグでしょうか。以前はエージェントフォワーディングを設定するとアプリが落ちてしまっていたので、それに比べると改善されているようです。

他のアプリと比較した場合の大きなマイナス点は、バックグラウンド動作の終了前に通知をもらえないことです。Moshが利用できるならこれは大きな問題にならないのですが、残念ながらこのアプリではMoshは使えません。

全体的には、リーズナブルな価格で多くの人に重要な機能をバランスよく提供しているイメージです。その分、バックグランド通知かMoshのどちらか1つでも提供してくれたら手放しでおすすめにできるのにな、と残念に思います。

Shelly - SSH Client

Shelly - SSH Client

  • Touch Foo
  • 仕事効率化
  • 無料

Blink Shellは今回評価に追加したアプリですが、正直むちゃくちゃ気に入っています。このアプリは単なるSSH/Moshアプリではなく、機能が制限されたシェルの機能をiPad上に実現するアプリであり、その中にsshやmoshコマンドも含まれている、という感じです(Moshの実装も非常に安定しています)。このシェルには限定的なUnix風のファイルシステムも付いてきていて、ファイルの保存も可能です。

そのため、たとえば他のアプリではどこかにログインして実行しなければならないping, dig, telnet, whoisなどのコマンドは、このアプリではローカルですぐに実行が可能です。Unixユーザなら機能ごとにiPadのアプリを切り替えてメニューにパラメータを色々入れてボタンをタップするより、コマンドラインから直接「ping IPアドレス」とか「telnet ホスト名 80」とか「ssh ホスト名」とか「whois ドメイン名」とか叩くほうが楽じゃないでしょうか。

f:id:xoc:20190119121319p:plain

SSHやMoshの設定はconfigコマンドからメニュー形式で行うことが可能です。これがOpenSSHで言えば~/.ssh以下のファイルに相当します。

f:id:xoc:20190119155727p:plain

また、シェルからはssh-agent, ssh-keygenなどのコマンドも利用可能で、~/.ssh以下に作られた鍵も、ログインに利用可能です(ただし現状では、これらのコマンドや~/.ssh/config等の全機能が提供されているわけではなく、全体的に「うまく動作している」のはconfigコマンドからHostをやKeyを追加した場合のようですが、今後に期待です)。

f:id:xoc:20190119121548p:plain

日本語の処理もほぼ完璧で、表示、編集、そしてATOKなどのサードパーティ製キーボードを含む入力全てが問題ありません。その点でもお勧めできます。また、このアプリにしかない機能として割と気にいっているのは、ハードウェアキーボードに存在しないESCキーを、CAPS LOCKに割り当てることのできる機能です(他にもShiftやバッククオートにも割り当て可能ですが、さすがにShiftや「~」はハードウェアキーボードから打ちたいですよね?)。

キーボードに関する設定は非常に多岐にわたり、「Grab Ctrl+Space」が有効化されていれば、Ctrl+Spaceも問題なくリモートホストに送られます。そのかわり、オンスクリーンキーはありません。そのため、非常にシンプルな画面になっているのがまた良いと思います。

少しわかりにくい点としては、踏み台経由での接続やプロキシ経由での接続は他のソフトのようにメニューから直感的に設定するのではなく、OpenSSHで~/.ssh/configで設定するように、HostメニューからProxyCommand(本アプリのメニューではProxyCmdと表記されている)の設定をすることです。そしてそれがまた少し癖があるのが難物です。

踏み台経由での接続は、ホストAを経由してホストBに接続するとすると、HostNameにホストBのホスト名を、ProxyCmdに「ssh -W %h:%p ホストA」と設定します。この際、ProxyCmdに設定するホスト名は、DNSで解決する通常のホスト名ではなく、「Hosts」メニューで設定した「Host」の名称であることが必要なようです。

SOCKSプロキシ経由での接続は、HostNameにログイン対象のホスト名を書き、ProxyCmdに「nc -x プロキシのIPアドレス:ポート番号 %h %p」と設定することで設定可能です。

ちなみにポートフォワーディングも、sshの-Lオプションと-RオプションでOpenSSHと同様に指定します。

少し問題だと思う点は以下の通りです。

  • パスコード・FaceID・TouchIDでの認証は、バックグラウンド移行後10分経たないと有効化されない
  • configコマンドから登録したKeyに関しては、問答無用でパスコードが記憶されてしまう

実は後者に関しては、ssh-keygenから登録したキーに関しては機能しないので、configコマンドではなくssh-keygenでキーを登録することで回避可能です。もちろんssh-keygenで登録したキーを、Moshから利用することも可能です。また、せっかくローカルにファイルを置けるようになっているのだから、何らかのエディタもローカルのシェルで使えるようにしてもらうと、さらに嬉しいかも知れません(現在はエディタは入っていません)。

価格は2,400円と少し強気な価格ですね。しかも体験版とかもないうえに割と尖ったアプリということで、購入にはある種の度胸が必要かもしれません。一方、ソースがGitHubで公開されているので、ビルドできる環境のある人は無料で利用できるとかなんとか。現在も活発に開発が続いているようなので、今後の改良にさらに期待したいアプリです。

Blink Shell: Mosh & SSH

Blink Shell: Mosh & SSH

  • Carlos Cabanero
  • ユーティリティ
  • ¥2,400

総合評価

ということで結構みんな一長一短があって選択が難しいのですが、基本的な項目を表にまとめてみました。

アプリ名 Prompt 2 Termius Premium Shelly Pro Blink Shell
日本語表示 問題なし 問題なし 問題なし 問題なし
日本語編集 問題なし 問題なし 問題なし 問題なし
日本語入力 問題なし 問題多い 問題なし 問題なし
他社キーボード 設定要 利用可 利用可 利用可
Mosh 不可 利用可(β) 不可 利用可
ローカル鍵生成 可能 可能 可能 可能
生成可能鍵種 RSA, ECDSA, ED25519 RSA, DSA, ECDSA, ED25519 RSA, DSA, ED25519 RSA, DSA, ECDSA, ED25519
エージェントフォワーディング 利用可 有料版は可 動作しない 不可
踏み台接続 不可 有料版は可 不可 可能
ポートフォワーディング 不可 Local, Remote, Dynamic 不可 Local, Remote
プロキシ接続 不可 HTTP, SOCKS 不可 SOCKS
PIN桁数 4, 6, 複雑 4 6 4
FaceID, TouchID 利用可 有料版は可 利用可 10分経過後
BG警告通知 あり あり なし なし
Capsカスタム 不可 不可 不可 Ctrl, ESC
Ctrl-SPC入力 不可 利用可 利用可 設定要
スクリーンESC位置 左端 左側に設定可 左端 スクリーンキーなし
同一ホスト接続 不可 不可 可能 可能
有料版価格 1,800円 780円/月, 6,700円/年 480円 2,400円

一般的に推奨できるのはTermius(無料版)とShelly Proでしょうか。

Termiusの無料版に関しては、日本入力に問題が有る点と、上記の比較表で「有料版は可」となっている機能がなくても問題ないと思うかについて我慢できるならありでしょう(無料アプリでMoshサポートのクライアントが必要な場合は、おそらくこれしか選択肢はありません)。

Termius - SSH client

Termius - SSH client

  • Crystalnix
  • ユーティリティ
  • 無料

また年間サブスクリプションの価格が以前くらいまで下がれば、Premiumの選択肢も有りだと思います(正直、自分でも今回の価格であれば年間サブスクリプションは購入しないでしょう)。

Shellyに関してはバックグランドの警告通知とMoshのサポートがいずれもない点が痛いですが、そこが許せるのであれば、安価なこともあり、お勧めできると思います。なんというか、無難です。

Shelly - SSH Client

Shelly - SSH Client

  • Touch Foo
  • 仕事効率化
  • 無料

UTF-8ではなく、シフトJISやEUCのサーバで日本語を使う必要があるのであれば、Promopt 2の一択でしょう。

Prompt 2

Prompt 2

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

そういう意味で、今回の評価対象にした4つのアプリは、それぞれに選ぶ理由があり、どれにするのが一番かという判断は、人による、としか言いようがなさそうです。

ですが、私が大好きで今後も愛用することとしたのはやはりBlink Shellです。細かい癖は結構ありますが、iPad上にシンプルで快適なシェルを実現するというコンセプトが尖っていて良いし、今回の評価で唯一、ESCキーをCaps Lockにマップする機能を提供していた点も素晴らしい。Moshのサポートも安定していて好印象。

Blink Shell: Mosh & SSH

Blink Shell: Mosh & SSH

  • Carlos Cabanero
  • ユーティリティ
  • ¥2,400

もし現在、Macのターミナルから直接sshやmoshコマンドを叩いているのであれば、一番違和感なく使いこなすことが可能でしょう。ただしエディタはやっぱりほしいので、vimか何かも入らないかな、などと思ってしまいます。

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

おまけ

以前紹介したLogicool Spotlightだけれども、iPad Proでも普通にBluetoothペアリングして、PowerPointなどのスライド送り(前後)には使えるのね。肝心のスポットライト機能は使えないのが凄まじく残念なのだけれども…。Macでは、マウスカーソルのアクセシビリティ機能のハックで実現しているようなので、マウスカーソルのないiPadで同等の機能を作るのはかなり難しそう。何とかハックできる機能はないのかな?

xckb.hatenablog.com

あと、iPad Pro 11インチのFaceIDはiPhone Xsとどのような違いがあるかもまた調べてみたいな。実は、さらにFaceIDに関してはやってみたいテストがあるのだ。

xckb.hatenablog.com