iPadのSSHクライアントアプリ（Termius）からcodeanywhereに接続する

# 概要

表題そのままですが、iPadからcodeanywhereの環境でターミナル操作をするとき、ブラウザやcodeanywhereのiOS用アプリではなく、iOS用SSHクライアントアプリから繋ぐ方法です。

+ iPadでcodeanywhereを使う方法は下記の記事を大いに参考にさせて頂きました。

https://qiita.com/ShinoTatwu/items/06cca8aba7e768677909

## 公式ページの方法

公式ページにはWindowsのPuttyで繋ぐ方法が書かれています。これを参考にしています。
（というか同じことをiPadアプリで行っただけです）

http://docs.codeanywhere.com/overview/codeanywhereui/terminal.html

たぶんcodeanywhere側のキーをiPad側にimportするやり方もあると思いますが、上記の手順に従いました。

## なぜcodeanywhereアプリのSSH Terminalを使わないのか

iPadに外付けキーボードを接続して使ってみたのですが、TabやCtrl-U、Ctrl-Pなどがターミナル内で効かず不便だったからです。（もしかしたら設定で変更できるのかもしれませんが）

# SSHクライアントアプリ

+ アプリについては下記の記事を参考にいたしました。

https://xckb.hatenablog.com/entry/2017/06/18/121745

ただし、この記事で書かれているvSSH HDは現在（2018/09/24）時点でApp Storeに見当たらず、ローカル鍵生成が可能な[Termius](https://itunes.apple.com/jp/app/termius-ssh-client/id549039908?mt=8)（フリー版の方）を選択しました。

# 手順

初めてTermiusを立ち上げると、「Create a free account」 というボタンが出ますが、その下の「continue without account」を選択しました。

## Terminusでキーペア生成

メニューから「Keychain」を選択し、右上の「+」を選択します。
「Generate Key」を選択し、入力します。
Key Sizeは公式ページに下記のようにあったので4096にしてみました。

```
3. In the Number of bits in a generated key field, specify either 2048 or 4096 (increasing the bits makes it harder to crack the key by brute-force methods)
```

入力したら右上の「Save」をクリックします。

![image.png](https://qiita-image-store.s3.amazonaws.com/0/66839/61ac1df7-4b35-1698-8dc6-9840d1cc6077.png)

するとSSH Keysにキーが表示されます。

![image.png](https://qiita-image-store.s3.amazonaws.com/0/66839/d2734b0d-cac4-1ff0-ebd8-11abee6be899.png)

## KeyのExport

表示されたKey（上記の例だと「codeanywhere_key」）を選択すると、「Export To」画面が表示されます。右上のアイコンをタップ、「Copy Public key」を選択し、クリップボードにコピーします。

ここで公式ページの「Container config」の下記手順に従い、iPadのcodeanywhereアプリでSSH Terminalを立ち上げ、`authorized_keys` に貼り付けようとしたのですが、先ほどクリップボードにコピーしたテキストがどうしても貼り付けられませんでした。（Pasteが出てこない）。

```
1. Log on to your container
2. Run: vim ~/.ssh/authorized_keys
3. Paste key in new line
4. Save and exit
```
仕方ないので、この手順だけは一旦メモにコピーしてパソコンで作業しました。iPadだけで完結したかったのですが・・・。

## Hostの設定

Terminusのメニューから「Hosts」を選択し、右上の「＋」を選択します。
「New Host」を選択し、入力します。
ここで「Hostname」と「Port」はcodeanywhereのInfoにある「SSH access on」に記載されているものを指定します。（「:」の左がHost nameで右がPort番号）

![image.png](https://qiita-image-store.s3.amazonaws.com/0/66839/609ed724-d6af-1e52-89f5-96a4ad5be56b.png)

また公式ページにも書いてあるようにユーザー名には「cabox」を指定します。
「Use SSH」を選択します。
Keyには上記で作成したKeyを選択します。
ターミナルの色も選択できます。

![image.png](https://qiita-image-store.s3.amazonaws.com/0/66839/7f294985-dfcd-5814-cbc3-bc918d3af47c.png)

![image.png](https://qiita-image-store.s3.amazonaws.com/0/66839/a2c9e74d-b38d-06a9-aaf4-3f90d989e966.png)

「Save」を選択します。
Hosts一覧に作成したHostが表示されています。

![image.png](https://qiita-image-store.s3.amazonaws.com/0/66839/2a8d4276-79a3-ecf2-e237-5db18aa41897.png)

# 接続

Hostsに表示されているHostを選択します。
初回は「Are you sure you want to continue connecting?」を聞かれるので「Continue」を選択します。

![image.png](https://qiita-image-store.s3.amazonaws.com/0/66839/654d7cd1-20fc-bc2f-a127-cae97bb16b44.png)

無事につながりました！

## 注意

codeanywhereをしばらく使っていなかったらコンテナがアーカイブされていて、リストアしたところホスト名とポート番号が変わっていました（その前にきちんと警告のメールも来ていました）。SSHクライアントアプリで設定したときはコンテナを常時立ち上げにしておくなど気をつけないと、ホスト名再設定など面倒です。

# 余談

外付けキーボードは[Vortex Core](http://www.archisite.co.jp/products/vortex/core-en/)の赤軸で、それをカメラアダプタでiPadに接続しています。キー配列に慣れるまで大変ですが、iPadと一緒に持ち歩くには小さくて良い感じです。