VNCとSSHでクラウドMacに接続する

認証情報のメールを受け取ってから5分あれば、もうリモートデスクトップにログインできているはずです。このページではGUI接続、CLI接続、レイテンシの実測データ、セキュリティ強化までをひと通り解説します。順番どおりに進めればOKです。

Access Overview

用途で選ぶ3つの接続方式

各Mac miniは出荷時点でVNC(5900)とSSH(22)の両チャネルが有効になっており、認証情報は同じ暗号化メールに記載されています。Tailscaleはオプションで、導入も管理もご自身の判断でお願いします。

VNC画面共有

macOSのデスクトップがそのまま表示されます。証明書のインストール、Xcodeのグラフィカルな操作、4K動画の編集など、マウス操作が欠かせない作業に向いています。推奨帯域は10Mbps以上です。

SSHコマンドライン

ビルドスクリプトの実行、CIランナーの登録、rsyncでのファイル転送など、日常的に使うメインの接続経路です。レイテンシに強く、2G回線でも動作するため、通常はこちらの利用をおすすめしています。

Tailscaleでのネットワーク構築(任意)

クラウドMacをプライベートネットワークに参加させ、内部IPで直接アクセスできるため、公開ポートを晒す必要がありません。管理者権限はすべてお客様側にあり、brewコマンド一発で導入できます。

方式プロトコル / ポート向いている用途向いていない用途レイテンシへの感度
VNCRFB / 5900GUI操作、証明書インストール、シミュレーター操作、動画編集長時間の自動化タスク高い(120ms未満推奨)
SSHSSH / 22スクリプト実行、CIランナー、ファイル同期、tmuxでの長時間タスクGUI操作が必須の一度きりの設定低い(300msでも運用可能)
TailscaleWireGuard / UDP複数デバイスからの接続、公開ポートを閉じたトンネル基盤ソフトを増やしたくないシンプル運用下位回線の状態に依存
VNC Setup

VNC接続:2つの方法、所要3分

方法A:macOS標準の画面共有

お使いの端末もMacであれば、追加インストールは不要です。Finderで⌘K(移動 → サーバへ接続)を押し、認証情報メールに記載のアドレスを下記の形式で入力し、VNCパスワードを入力するだけで接続できます。

方法B:RealVNC Viewer(Windows / Linux)

新規接続の作成時にノードのIP:5900を入力し、EncryptionはPrefer on、Picture qualityはまずAutomaticにしておき、接続後に下表を参考に手動調整してください。Scalingは100%推奨で、二重縮小による文字のにじみを避けられます。

初回接続でフィンガープリントの確認を求められた場合は、認証情報メール末尾に記載のホストフィンガープリントと照合してから「許可」をクリックしてください。パスワードを5回間違えると60秒間ロックされますが、これは既定の総当たり攻撃対策であり、故障ではありません。

local — screen sharing
# Finderで⌘K、またはターミナルから直接開く
$ open vnc://203.0.113.10:5900
# 解像度はセッションに合わせて調整(リモート側で実行)
$ displayplacer "id:main res:1920x1080 hz:60"
✓ connected: mini-tokyo-07 (M4, 24GB)

画質はどう調整する?

VNCの操作感は「解像度 × 色深度 × 圧縮品質」の3変数で決まります。原則として、まず解像度を下げ、次に色深度を下げ、最後に圧縮品質を調整してください——圧縮によるノイズは低解像度よりコードの視認性に響きます。

プロファイル解像度色深度JPEG品質推定帯域推奨ネットワーク
なめらか優先1280×72016-bit4/93~5 Mbps4Gテザリング、大陸間回線
バランス型(既定推奨)1920×108016-bit6/98~12 Mbps家庭用ブロードバンド、近距離ノード
画質優先2560×144024-bit9/920~35 Mbps有線ギガビット + 遅延60ms未満

色深度を24-bitから16-bitに下げると帯域を約40%節約できますが、コードを書く用途では見た目の差はほぼありません。動画編集や色調整の際は24-bitに戻してください。

SSH Practice

SSH実践:鍵認証、ファイル転送、長時間タスク

ご注文時にSSH公開鍵をアップロードしていれば、納品と同時に鍵認証で直接ログインできます。アップロードしていなくても問題ありません。まずメールに記載の初期パスワードでログインし、下の最初のターミナルの手順に従ってパスワードログインを無効化してください。

鍵認証のみでログイン
# ローカル側:公開鍵をアップロード(初回はパスワード認証)
$ ssh-copy-id -i ~/.ssh/id_ed25519.pub admin@203.0.113.10
# リモート側:パスワードログインを無効化
$ sudo sed -i '' 's/^#\{0,1\}PasswordAuthentication.*/PasswordAuthentication no/' /etc/ssh/sshd_config
$ sudo launchctl kickstart -k system/com.openssh.sshd
✓ 以降は鍵認証のみを受け付けます
rsync / sshfsでのファイル転送
# プロジェクトディレクトリを差分アップロード(再開可能)
$ rsync -avzP --exclude .git ./MyApp admin@203.0.113.10:~/work/
# リモートディレクトリをローカルにマウント(macFUSEが必要)
$ sshfs admin@203.0.113.10:/Users/admin/work ~/remote-work
# 使い終わったらアンマウント
$ umount ~/remote-work
tmuxで長時間タスクを維持
# フルアーカイブビルド用のセッションを開く
$ tmux new -s build
$ xcodebuild archive -scheme MyApp -destination 'generic/platform=iOS'
# Ctrl-b d でデタッチ、切断してもタスクは継続
# 戻ってきたら再接続
$ tmux attach -t build

3つの運用習慣

  • 長時間タスクは必ずtmux内で実行する。tmux内で動いていればSSH切断がタスク終了を意味しません。フォアグラウンドで直接動かしているプロセスは、セッション切断とともに強制終了されます。
  • 大容量ファイルはVNCのクリップボードではなくrsyncで転送する。rsyncには検証機能と再開機能がありますが、クリップボード経由のドラッグにはどちらもありません。50GBクラスの素材ではその差が特に顕著です。
  • ローカルの~/.ssh/configにノードの別名を設定し、ServerAliveInterval 30を追加しておきましょう。以降はssh tokyoだけで直接接続でき、NATのタイムアウトによる切断も同時に解決します。
Latency Data

拠点別レイテンシ実測データ

ノードを選ぶ前にこの表を確認してください。数値はICMP pingの中央値(ミリ秒)で、低いほど操作の追従性が良くなります。目安として、60ms未満はローカルに近い操作感、60~120msは日常的な開発に問題なし、150ms超はSSH主体またはヘッドレス運用を推奨します。

発信地→ 東京ノード→ ソウルノード→ シリコンバレーノード推奨
北京5246152ソウルを優先、東京をバックアップに
上海3842148東京を優先
深セン4844158ソウルと東京どちらも可
東京234108ローカル直結
ソウル332132ローカル直結
シンガポール6874168東京がわずかに優位、VNCはバランス型推奨
ロサンゼルス1021286シリコンバレーを優先
測定期間 2026-07-24 ~ 2026-07-30、1日4回の時間帯で計測 サンプル数 各発信地→各ノード間でmtr -c 500を実行し、中央値を採用 回線条件 アジア圏は複数回線を混合計測して平均を算出、その他地域は現地の主要ISPを使用

ご自身で再測定したい場合は、各ノードのテスト用IPとmtrの使い方をお困りの場合はページのネットワーク診断セクションに掲載しています。ルートトレースを添えたチケット提出用のテンプレートも用意しています。

Low Latency

低遅延化の4つのコツ

1. 実測データを基に近いノードを選ぶ

物理的な距離はソフトウェアでは解決できません。上表の40msと150msの差は、どんな圧縮パラメータを使っても埋められません。アジア圏のお客様は東京またはソウル、アメリカ大陸のお客様はシリコンバレーを標準としてください。

2. 圧縮レベルで滑らかさを確保する

回線状況が良くないときは、VNCを「なめらか優先」プロファイル(16-bit色深度+中程度のJPEG品質)に切り替えてください。フレームレートが12fpsから25fps以上まで改善することが多く、コードのスクロールも残像感がなくなります。

3. 有線を優先、Wi-Fiは5GHz帯を使う

2.4GHz Wi-Fiは±30ms程度のジッターが発生しやすいですが、有線接続では±3ms程度に抑えられます。VNCは絶対的な遅延よりジッターに敏感で、平均50msでもジッターが大きい場合、安定した80msより体感が悪くなることがあります。

4. 画面操作はVNC、負荷の高い処理はSSHで

コンパイル、パッケージング、ファイル転送はすべてSSH経由でバックグラウンド実行し、VNCはマウス操作が必要な場面だけに限定してください。画面の再描画が発生しない分、帯域をデータ転送に回せます。

Hardening

セキュリティ強化チェックリスト

このマシンはお客様専有の物理ノードであり、セキュリティ強化の責任もお客様側にあります。以下の5項目を順番に実施すれば、公開範囲はほぼ最小化できます。

  • SSHの既定ポートを変更する。/etc/ssh/sshd_configPort 22を高位ポート(例:2222)に変更するだけで、自動スキャンによるトラフィックを9割以上削減できます。
  • パスワードログインを無効化し、鍵認証のみにする。前のセクションで紹介した2行のコマンドを実行すれば恒久的に反映されます。初期パスワードは使い切ったら失効させてください。
  • fail2banで総当たり攻撃を防ぐ。brew install fail2banを実行後、sshd jailを有効化してください。既定では5回失敗すると10分間ブロックされ、CI運用には影響しません。
  • VNCは公開せず、SSHトンネル経由にする。右側のコマンドでトンネルを構築したら、コントロールパネルのファイアウォールで5900ポートの公開を無効化してください。
  • 証明書と鍵は専用のキーチェーンに保管する。CI署名用のキーチェーンは個別に作成・ロック解除し、ログイン用のキーチェーンとは混在させないでください。
VNC over SSH トンネル
# ローカル側でトンネルを構築:リモートの5900をローカル5901にマッピング
$ ssh -N -L 5901:localhost:5900 admin@203.0.113.10
# 別ウィンドウを開いてローカルポートに接続
$ open vnc://localhost:5901
✓ VNCトラフィックはすべてSSH経由で暗号化されています
Headless CI

ヘッドレスCIモード:VNCなしの最小構成運用

このマシンをself-hosted runner専用として使う場合は、GUIセッションを一切開かない運用がおすすめです。公開範囲を減らし、メモリ消費を抑え、VNCの帯域も不要になります。

  • 画面共有サービスを無効化し、ポート変更済み・鍵認証のみのSSHだけを残すことで、公開範囲を1つのポートに絞り込めます。
  • runnerはlaunchdで常駐させる:GitHub Actions runner付属のsvc.shがLaunchDaemonを生成し、起動時の自動起動、クラッシュ時の自動再起動、切断時の自動再接続を行います。
  • キーチェーンのロック解除をスクリプトに組み込む:ビルド前にsecurity unlock-keychainを実行しておけば、署名処理がGUIセッションのダイアログに依存しなくなります。
  • 周期ごとの無料再インストールは最後の保険です。環境が完全に汚れてしまったら、修復よりも再インストールのほうが速く済みます。DerivedDataキャッシュはCI連携ガイドの手順で永続化してください。
headless runner の最小構成
# 画面共有を無効化(必要になれば即再有効化可能)
$ sudo launchctl disable system/com.apple.screensharing
# GitHub Actions runnerを登録して常駐させる
$ ./config.sh --url https://github.com/org/repo --token XXXX
$ sudo ./svc.sh install && sudo ./svc.sh start
# ビルド前に署名用キーチェーンをロック解除
$ security unlock-keychain -p "$KC_PASS" ci.keychain-db
✓ runner online, no GUI session
Troubleshooting

接続トラブルのクイックリファレンス

症状に該当する項目を見つけて、まずは一行コマンドで対処してみてください。それでも解決しない場合は、症状と試した手順を添えてチケットを送ってください。初回返信は2時間以内です。

症状よくある原因一行での対処
VNCが黒画面になる画面共有サービスが異常終了しているsudo launchctl kickstart -k system/com.apple.screensharing
VNCがカクついてフレームが落ちる画質プロファイルが回線の許容量を超えている色深度を16-bitに、JPEG品質を4/9に、解像度を1280×720に下げる
SSH接続がタイムアウトするポート変更後もポート22に接続している、またはローカルのファイアウォールでブロックされているssh -p 2222 admin@203.0.113.10 -vでハンドシェイクがどこで止まるか確認する
SSHが鍵を拒否するローカルの秘密鍵の権限が緩すぎるchmod 600 ~/.ssh/id_ed25519
SSHが頻繁に切断されるNATのアイドルタイムアウトで長時間接続が切られているprintf "ServerAliveInterval 30\n" >> ~/.ssh/config
クリップボードが同期しないリモート側のクリップボードサービスがハングしているSSHでkillall pboardを実行すると、サービスが自動再起動します
トンネル経由の5901に接続できないトンネルのプロセスが終了しているssh -N -L 5901:localhost:5900 admin@203.0.113.10を再実行する

Xcodeの署名エラーやキーチェーンのロック解除を含む、より詳しい手順はトラブルシューティングガイドに掲載しています。

認証情報は10分でメール到着、今夜にはもう接続できます

お支払いから通常10分以内にVNC/SSHの認証情報をお届けします。1日単位でのレンタルで、7日以内なら未使用日数分を返金いたします。