iPad から Mac と家のサーバーを操作する ― Termius の SSH と、VNC アプリの画面共有
iPad から、家の Mac・サーバー・AI 用の仮想マシンを操作できるようにしました。コマンドは Termius の SSH、画面は VNC アプリという組み合わせです。Mac の3台目の画面共有だけは、これからテストします。
SSH は暗号化された通信でコマンドを操作するしくみ、VNC は別の機器の画面を見ながら操作するしくみです。パソコン同士のつなぎ方は、これまでの記事に書きました:Mac・Windows・Linux を SSH で相互接続する、Mac と Windows をどちらからでも画面共有で操作する。
全体の構成

| 接続先 | SSH(Termius) | 画面(VNC アプリ) |
|---|---|---|
| mac1 | 接続できた | Jump Desktop で接続できた |
| mac2 | 接続できた | Jump Desktop で接続できた |
| mac3 | 接続できた | 今後テスト |
| 家のサーバー | 接続できた | なし(画面の機能を入れていない) |
| AI 用の仮想マシン | 接続できた | RVNC Viewer・Jump Desktop で接続できた(SSH トンネル経由) |
今回の確認は、すべて家の Wi-Fi からです。
1. Termius で SSH の鍵を作る
Termius は iPad で使える SSH アプリです。家のサーバーはふだんパスワードでのログインを禁止しているので、鍵を登録するあいだだけ許可しました。外からは届かない設定のままです。
- Termius で接続先を追加します。アドレスとポートは別の欄に入れます(
アドレス:XXXXとまとめて書かない) - Keychain の + から Generate Key を選び、種類を ED25519 にして鍵を作ります
- 公開鍵(
ssh-ed25519で始まる1行)をコピーして、接続先の~/.ssh/authorized_keysに追加します - 接続先の認証を鍵に切り替えて、パスワードなしで入れることを確かめます
鍵は秘密鍵と公開鍵の組で、接続先に渡すのは公開鍵だけです。Mac 3台と仮想マシンにも、同じ公開鍵を追加しました。
2. パスワードでのログインを元に戻す
鍵で入れることを確かめてから、家のサーバーのパスワードでのログインを禁止に戻しました。
sudo sed -i 's/^PasswordAuthentication yes.*/PasswordAuthentication no/' /etc/ssh/sshd_config.d/00-auth.conf
sudo sshd -t
sudo systemctl reload sshd
sshd -t は設定の書き間違いを調べるコマンドで、問題がなければ何も表示しません。戻した後は、sudo sshd -T で設定が no になっていること、パスワードでの接続が断られることを確かめました。
Mac 3台のパスワードでのログインは、macOS の初めの設定のまま許可しています。禁止するかどうかは、まだ決めていません。
3. Mac の画面を Jump Desktop で開く
Mac は「画面共有」を有効にすると、VNC で接続できます。iPad には VNC アプリが最初から入っていないので、App Store から Jump Desktop を入れました。接続先は次のとおりです。
| 項目 | 入れる値 |
|---|---|
| 接続方式 | VNC(RDP ではない) |
| アドレス | その Mac の IP アドレス |
| ポート | XXXX |
| ユーザー名・パスワード | その Mac のログインのもの |
mac1 と mac2 はこれでつながりました。mac3 は今後テストします。
4. 仮想マシンの画面は SSH トンネルで開く
家のサーバーには画面の機能を入れていないので、SSH だけです。一方、AI 用の仮想マシンには Xfce(Linux のデスクトップ環境)と TigerVNC(VNC サーバー)が入っています。ただし VNC は、仮想マシンの中からの接続だけを受け付ける設定です。
この設定は変えず、SSH トンネルを使いました。SSH の暗号化された通信の中に、別の通信を通す方法です。

Termius の Port Forwarding に、Local Forwarding のルールを1つ追加します。
| 項目 | 入れる値 |
|---|---|
| Local port | XXXX |
| Bind address | 127.0.0.1 |
| Intermediate host | 仮想マシン |
| Destination address | 127.0.0.1 |
| Destination port | XXXX |
ルールをタップしてトンネルを開始し、VNC アプリの接続先を 127.0.0.1:XXXX にします。127.0.0.1 は iPad 自身のことで、ここに入った通信を Termius が仮想マシンへ運びます。パスワードは VNC 用に決めたものです。

RVNC Viewer と Jump Desktop の、どちらでもつながりました。
つまずいたところ
Termius を閉じると、画面もつながらない
トンネルは Termius が運んでいるので、Termius を閉じると RVNC Viewer も Jump Desktop もつながらなくなりました。Termius のウィンドウを開いたまま、VNC アプリのウィンドウを手前に重ねた状態では使えました。
「ポートに接続できない」というエラー
RVNC Viewer で、次のエラーが出ました。
The port on which the computer is listening for a connection could not be contacted
原因は、VNC アプリに登録した接続先のアドレスの間違いでした。トンネルを使うときの接続先は、仮想マシンのアドレスではなく 127.0.0.1 です。仮想マシンの VNC のログに接続の記録がなかったので、iPad の中で止まっていると見当をつけられました。
鍵の登録の前は、SSH で入れない
仮想マシンはパスワードでのログインを禁止しているので、公開鍵を登録する前の接続は失敗しました。ログには、接続元の iPad が認証の前に切断した記録が残っていました。
「Export to host」に出てこない
Termius には、作った鍵を接続先へ送る「Export to host」があります。接続先をホストとして保存していないと、送り先に出てきません。今回は手で公開鍵を貼りました。そのとき同じ鍵を3回貼ってしまい、authorized_keys に同じ行が3行できました。ログインに影響はありませんが、後から見分けにくくなります。
これからやること
- mac3 の画面共有をテストする
- 外出先から、VPN をつないで同じ接続先を試す(iPad の VPN 接続そのものは確認済みで、SSH と画面はまだ)
- Mac 3台のパスワードでのログインを禁止するか決める
- 2台目の iPad にも鍵を用意する
まとめ
- iPad から Mac 3台・家のサーバー・仮想マシンに、Termius の SSH で鍵を使って入れるようにした
- Mac は Jump Desktop の VNC で画面を操作できる。3台目は今後テスト
- 仮想マシンの VNC は外に開かず、SSH トンネルの中を通した
- トンネルを使うあいだは、Termius を閉じない。接続先は
127.0.0.1
