結論:3ステップ。詰まるのは必ず「2枚目のファイアウォール」
国内VPS(さくらのVPS / ConoHa VPS / Xserver VPS / KAGOYA CLOUD VPS)にスマホから SSH で入る手順は3つです。
- スマホの SSH アプリで鍵を端末内生成し、公開鍵をサーバーに登録する。 サーバー作成画面の「SSH Key」欄に公開鍵を貼り付けるのが最短です。
- コントロールパネル側のフィルタで 22番を許可する。 ここが本題です。
- SSH アプリにホストを登録して接続する。 IPアドレス、ユーザー名、鍵、そして
ServerAliveInterval。
そして、つまずく箇所はほぼ1点に集中します。国内VPSには「コントロールパネル側のフィルタ」と「OS 側のファイアウォール」という2枚のファイアウォールが直列に並んでおり、片方しか開けていないと接続がタイムアウトする、というものです。事業者ごとに名前が違うのが厄介で、同じ役割の機能が次のように呼ばれています。
| 事業者 | パネル側フィルタの名称 | 挙動の特徴 |
|---|---|---|
| さくらのVPS | パケットフィルタ | コントロールパネルから設定する簡易的なステートレスフィルタ |
| ConoHa VPS | 接続許可ポート(セキュリティグループ) | サーバー追加時と追加後の設定画面の両方から指定できる |
| Xserver VPS | パケットフィルター(旧「接続許可ポート設定」) | ポート範囲指定に対応。SSH のプリセットあり |
| KAGOYA CLOUD VPS | セキュリティグループ | インスタンス作成直後はパスワードログインが禁止済み |
海外のクラウドVPS(DigitalOcean、Linode、Hetzner、Vultr)をスマホから使う話は スマホから VPS を管理する方法 に別途まとめてあります。この記事は国内事業者に固有の、パネルまわりの落とし穴に絞って書きます。
国内VPS最大の罠:フィルタが2枚ある
まずここを理解しておくと、以降のトラブルの9割が自己解決できます。
VPS に届くパケットは、2つの関門を順に通ります。
- コントロールパネル側のフィルタ。 VPS の OS より手前、事業者のネットワーク側で動きます。ここで落とされたパケットはOS に一切届きません。サーバー内で
tcpdumpを仕掛けても何も見えません。 - OS 側のファイアウォール。
ufw(Ubuntu)やfirewalld(AlmaLinux / Rocky Linux)です。VPS の中で動きます。
両方で許可されていないと接続は通りません。 そして引っかかる原因は、個人ブログや手順記事の多くが OS 側(ufw allow 22)だけを書いていて、パネル側の存在に触れていないことにあります。手順どおりにやったのに繋がらない、という状況の典型的な原因がこれです。
症状で切り分ける
エラーメッセージがどちらの関門で落ちたかを教えてくれます。ここは覚えておく価値があります。
| SSH アプリに出るエラー | 意味 | 疑うべき場所 |
|---|---|---|
Connection timed out / 応答なし | パケットが捨てられている(返事すら来ていない) | パネル側フィルタ、次に OS 側の DROP ルール |
Connection refused | パケットは到達しているが、そのポートで誰も待っていない | sshd が起動していない、ポート番号違い |
Permission denied (publickey) | ネットワークは全部通っている。認証の問題 | 鍵の登録先、ユーザー名、authorized_keys の権限 |
つまり Connection timed out ならネットワーク、Permission denied なら鍵、と最初の一手が変わります(接続タイムアウトの原因、Connection refused の原因、Permission denied の切り分け)。
SSHポートを変えるときの順序
この2枚構造が最も牙を剥くのが、SSH ポートの変更です。事故の起き方は毎回同じで、sshd_config の Port を 2222 に変えて再起動 → パネル側フィルタは 22番しか許可していない → 2222番宛のパケットが OS に届かない → 締め出し、です。
Xserver VPS の公式FAQでも「SSH接続ができずタイムアウトしてしまう」の確認項目として、パケットフィルター設定にSSHが追加されているかが挙げられています(XServer VPS サポート)。さくらのVPSでも同様に、パケットフィルタが有効なままだと OS 側でポートを変えても通らないため、フィルタ側に新しいポートを追加するか、フィルタを無効化する必要があります(さくらの VPS マニュアル:パケットフィルター)。
安全な順序はこれです。
- パネル側フィルタに新しいポート(例:2222)を追加する。この時点では 22番も開いたまま。
sshd_configのPortを変更してsshdを再起動する。- 今のセッションは絶対に閉じずに、SSH アプリでもう1本新しいポートへ接続してみる。
- 新しいポートで入れることを確認してから、パネル側フィルタの 22番を削除する。
スマホからの作業では、この「セッションを2本開いておく」がとりわけ重要です。 後述するとおり、ブラウザのコンソールはスマホでは実用性が低く、締め出されたときの復旧コストが PC 作業のときより格段に高いからです。ポート変更そのものの是非については SSH ポートの変更 にまとめてあります。結論だけ言えば、ポート変更はログのノイズ削減であってセキュリティ対策ではありません。
事業者別:どこを触ればいいか
さくらのVPS
パネル側フィルタ: 「パケットフィルタ」。公式マニュアルでも、コントロールパネルから設定する簡易的なパケットフィルタ機能と説明されています。用途別の設定(SSH、Web など)が用意されているので、SSH を追加すれば 22番が開きます(さくらの VPS マニュアル)。ステートレスである点は頭に入れておいてください。細かい制御をしたい場合は、パケットフィルタを無効にして OS 側の firewalld / ufw に一本化するほうが素直です。
コンソール: コントロールパネルの「コンソール」から VNCコンソールとシリアルコンソールの2種類が使えます。VNC は HTML5 モードでブラウザから直接キー入力ができ、シリアルコンソールはテキストベースなのでブラウザのコピー&ペーストが効きます(さくらの VPS マニュアル:コンソール)。締め出されたときはこの2つが命綱です。
リージョン: 石狩・東京・大阪から選べます。日本国内のモバイル回線から使うなら、どれを選んでも RTT は十分小さく収まります。
2要素認証: さくらインターネットは 2025年12月3日より、会員認証時の2要素認証を必須化しました(さくらインターネットのお知らせ)。TOTP 認証アプリが必要なので、スマホに認証アプリを入れておいてください。スマホ運用では、認証アプリとコントロールパネルと SSH アプリが同じ端末に揃うことになります。
ConoHa VPS
鍵の登録: コントロールパネルの「SSH Key」で、新規に自動生成するか、手持ちの公開鍵をインポートするかを選べます(ConoHa VPSサポート:SSH Keyを登録する)。スマホ運用では必ず「インポート」を選んでください。 理由は後述します。
パネル側フィルタ: 「接続許可ポート」。サーバー追加時の画面でも、追加後のサーバー設定画面でも指定できます(ConoHa VPSサポート:接続許可ポートを設定する)。サーバー作成時に SSH を許可しておけば、作成完了後すぐスマホから繋がります。より細かい制御が必要になったら、コントロールパネルの「セキュリティ」→「セキュリティグループ」で設定します。
IPv6: ConoHa VPS は IPv6 アドレスを17個標準で提供しますが、既定でVPSに設定されているのは1つで、複数使うには手動設定が必要です(ConoHa ドキュメント:IPv6)。
Xserver VPS
パネル側フィルタ: 「パケットフィルター」。以前は「接続許可ポート設定」という名称で、機能強化を経てポート範囲の指定にも対応しています(XServer VPS サポート:パケットフィルターの設定)。VPSパネルで「ONにする(推奨)」にチェックを入れ、フィルタールールに SSH を追加する、という流れです。
接続できないときの第一確認項目: 公式FAQ「SSH接続ができずタイムアウトしてしまう」が、まさにこのパケットフィルター設定を確認するよう案内しています(XServer VPS サポート)。ポートを変えたなら、新しいポート番号をフィルターに追加してから 22番を削除してください。
鍵の登録: 「SSH Key」メニューで鍵を作成し、VPS の新規作成時または OS 再インストール時に紐づけます(XServer VPS サポート:SSH Key)。ここでも、パネルで生成させるよりスマホ側で作った公開鍵を登録するほうが安全です。
KAGOYA CLOUD VPS
パネル側フィルタ: 「セキュリティグループ」で設定します(KAGOYA CLOUD VPS マニュアル:セキュリティグループの設定)。
初期状態が堅い: 公式マニュアルによれば、インスタンス作成直後は公開鍵認証でログインする構成になっており、SSH のパスワードログインはセキュリティのため禁止されています(KAGOYA CLOUD VPS マニュアル:SSH接続の設定)。この記事の「契約直後にやること」のうち何項目かが最初から済んでいる状態です。
コンソール: SSH でログインできなくなった場合に備え、コントロールパネルからインスタンスへコンソール接続できます(KAGOYA CLOUD VPS マニュアル:コンソール)。
鍵はスマホ側で作る(パネルで作らない)
コントロールパネルの鍵生成機能を使わないでください。 ConoHa も Xserver も、パネル上で鍵ペアを生成する機能を持っていて確かに便利なのですが、生成された秘密鍵はブラウザ経由でダウンロードされます。
これが意味するのは、あなたの秘密鍵が次の場所を通過するということです。
- ブラウザのダウンロードフォルダ(スマホなら「ファイル」アプリ)
- そこから同期されるクラウドストレージ(iCloud Drive、Google ドライブ)
- SSH アプリに読み込ませるまでの経路(共有シート、メール、クリップボード)
秘密鍵は「作った場所から一歩も動かさない」のが原則です。 正しい手順はこうなります。
ステップ1:スマホの SSH アプリで鍵を端末内生成する。 鍵の種類は ed25519 を選んでください。RSA より短く、モバイルでの署名も速く、2026年現在のサーバーならまず確実に受け付けられます(ed25519 と RSA の違い、iPhone で SSH 鍵を作成する方法)。コメントには iphone-2026-sakura のように端末名と用途を入れておきます。端末を失くしたとき、authorized_keys から消す行が一目でわかります。
ステップ2:公開鍵(1行)だけをコピーする。 ssh-ed25519 AAAAC3Nz... iphone-2026-sakura という形の公開鍵です。これは公開して構わない情報なので、クリップボードに乗せても問題ありません。
ステップ3:サーバー作成画面に貼り付ける。 ConoHa なら「SSH Key」→ 登録済みの公開鍵をインポート、Xserver なら「SSH Key」メニュー、さくらのVPSなら OS インストール時の公開鍵入力欄です。サーバー作成時に登録してしまえば、パスワードで一度も入らずに済みます。
すでに稼働中のサーバーに追加する場合は、既存の接続手段(PC からの SSH、またはパネルのコンソール)で ~/.ssh/authorized_keys に追記します。置き換えではなく追記なので、PC からの接続は今までどおり動きます(ssh-copy-id の使い方)。
mkdir -p ~/.ssh && chmod 700 ~/.ssh
echo 'ssh-ed25519 AAAAC3Nz... iphone-2026-sakura' >> ~/.ssh/authorized_keys
chmod 600 ~/.ssh/authorized_keys
パーミッションが緩いと sshd は鍵を無視します。Permission denied (publickey) が出たら、まずここを疑ってください。
鍵をスマホに置くこと自体の安全性については SSH 秘密鍵をスマホに置くのは安全か で詳しく扱っています。要点だけ言えば、エクスポート不可の鍵ストア(iOS Keychain / Android Keystore)に端末内生成で入っているなら、ノートPCの ~/.ssh に平文で置くより安全です。パスワード認証との比較は SSH 鍵とパスワードの違い に。
スマホ側のホスト登録と必須オプション
~/.ssh/config を書けるアプリなら、次の設定がそのまま使えます。GUI しかないアプリでも、項目名は同じなので対応づけられます。
Host sakura
HostName 133.xxx.xxx.xxx
User ops
Port 22
IdentityFile ~/.ssh/id_ed25519_iphone
IdentitiesOnly yes
ServerAliveInterval 30
ServerAliveCountMax 3
モバイルから使う場合、下の2つは省略できません。
ServerAliveInterval 30。 モバイル回線では NAT のタイムアウトによってセッションが黙って死にます。エラーも出ずに入力を受け付けなくなるあの状態です。30秒ごとに生存確認を送ることで、NAT のエントリが維持されます。IdentitiesOnly yes。 書かないとクライアントが手持ちの鍵を順に試し、サーバー側でToo many authentication failuresを食らって切断されます(原因と対処)。鍵を複数持ちがちなスマホでは特に踏みやすい罠です。
初回接続ではホスト鍵の確認プロンプトが出ます。これは正常な動作で、そのサーバーの指紋を初回に記憶するという SSH の設計(TOFU)によるものです(ホスト鍵と TOFU)。OS を再インストールするとホスト鍵が変わるため、Host key verification failed が出ます。VPS では OS 再インストールが手軽なぶん、この警告に遭遇する頻度が高めです(Host key verification failed の対処)。config 全般の書き方は SSH config ファイルの書き方 にまとめています。
締め出されたときの復旧:ブラウザコンソールはスマホだと辛い
国内VPS各社は、SSH が通らなくなったとき用にブラウザからのコンソール機能を用意しています。 さくらのVPSは VNCコンソールとシリアルコンソール、KAGOYA CLOUD VPS はコントロールパネルからのコンソール接続、Xserver VPS と ConoHa VPS も同様のコンソール機能を持っています。理屈のうえでは、SSH を完全に締め出しても復旧できます。
問題は、スマホのブラウザからこれを使うのが現実的に辛いという点です。
- VNCコンソールには Ctrl / Esc / Tab がない。 ソフトウェアキーボードには
Ctrl-CもCtrl-X(nano の保存)も素直に出てきません。viやnanoでsshd_configを直す、という復旧作業がまともにできません。 - 画面が小さすぎる。 VNC は画面全体を画像として転送するので、スマホの画面ではピンチズームしながらの操作になります。
- キーボードレイアウトの不一致。 日本語配列と US 配列のずれで、
|、~、:といったシェルで多用する記号が入力できないことがあります。 - シリアルコンソールのほうがまだマシ。 テキストベースなのでブラウザのコピー&ペーストが効きます。さくらのVPSのようにシリアルコンソールを提供している事業者なら、そちらを使ってください。
したがって、スマホ運用における正しい姿勢は「復旧手段があるから大丈夫」ではなく「復旧手段を使わずに済むよう作業する」です。具体的にはこの3つを守ってください。
- 設定変更時は SSH セッションを2本開く。 変更したら、今のセッションを閉じずにもう1本で新しい設定に接続できるか確かめる。これだけで
sshd_config由来の締め出しはほぼ全滅します。 - パネル側フィルタは「開けてから閉じる」。 新ポートを追加 → 動作確認 → 旧ポート削除。逆順は事故です。
PasswordAuthentication noにするのは、鍵で入れることを別セッションで確認してから。 順序を逆にすると、鍵の登録ミスと同時にパスワードの逃げ道も失います。
モバイル回線特有の問題4つ
1. 国内VPSの最大の利点は遅延の小ささ。 SSH は入力を1文字ずつサーバーへ送り、エコーを受け取って画面に出すため、RTT がそのまま打鍵の反射の遅さになります。 日本国内のモバイル回線から国内リージョンのVPSなら RTT はおおむね数十ミリ秒、対して米国西海岸のリージョンだと 100ms を超えるのが普通です。PC のハードウェアキーボードなら我慢できる差でも、ソフトウェアキーボードで打つスマホでは体感が明確に違います。日本から日常的に運用するサーバーを海外リージョンに置く理由は、価格差か法的要件がない限りありません。
2. 送信元IPが固定できない。 キャリアのモバイル回線は CGNAT(大規模NAT)配下にあるため、送信元 IPv4 アドレスは接続のたびに変わりえます。authorized_keys の from= や、パネル側フィルタの送信元IP制限に固定IPを書く運用は、スマホからの接続とは両立しません。 現実解は2つ ―― IP で絞るのを諦めて公開鍵認証のみで守るか、Tailscale のようなオーバーレイネットワークを入れて from="100.64.0.0/10" のようにその帯域だけ許可するかです(Tailscale SSH の使い方)。後者なら 22番をインターネットに公開する必要すらなくなります。
3. 回線が切り替わると接続が切れる。 Wi-Fi からモバイルデータへ移った瞬間、TCP セッションは切れます。対策はサーバー側の tmux です。 接続が切れても作業は生き残り、再接続して tmux attach で戻れます。長時間かかる処理(apt upgrade、ビルド、DBのダンプ)をスマホから投げるときは必須です(SSH 切断後もプロセスを生かす)。回線切り替えに強い接続がほしければ Mosh という選択肢もあります(Mosh vs SSH)。
4. IPv6 は当てにしない。 国内キャリアのモバイル回線は IPv6 が使えることが多い一方、VPS 側は既定で IPv6 が使えるとは限りません。 さくらのVPSは IPv6 に対応していますが既定では有効化されておらず、ConoHa VPS は 17個の IPv6 アドレスを提供するものの既定でVPSに設定されるのは1つです(ConoHa ドキュメント:IPv6)。スマホから繋ぐ経路としては IPv4 を前提に設計しておくのが安全です。
なお、国内サーバーならではの問題として文字化けもあります。日本の業務システムでは Shift_JIS / CP932 のログやファイルが残っていることが珍しくなく、スマホの SSH アプリで開くと化けます。原因と対処は SSH アプリの日本語入力と文字化けを直す にまとめてあります。Windows から Tera Term で運用してきた環境をスマホに移す場合の全体像は Tera Term の代わりをスマホで に。
契約直後にやること(チェックリスト)
グローバルIPを持つVPSの 22番には、契約した直後から総当たりのログイン試行が来ます。 上から順にやれば、スマホからでも1時間かからずに終わります。
| # | やること | 確認できたら |
|---|---|---|
| 1 | スマホ側で鍵を端末内生成し、サーバー作成時に公開鍵を登録する | 秘密鍵を一度もダウンロードしていない |
| 2 | パネル側フィルタで必要なポートだけ許可する(まずは 22番) | SSH アプリから接続できる |
| 3 | 一般ユーザーを作成し、sudo 権限を与える | sudo -v が通る |
| 4 | PermitRootLogin no にする(手順) | 別セッションで一般ユーザーとして入れる |
| 5 | PasswordAuthentication no にする | 鍵での接続を先に確認済み |
| 6 | fail2ban を入れる(設定方法) | fail2ban-client status sshd が動く |
| 7 | OSの自動更新を有効にする(unattended-upgrades / dnf-automatic) | 再起動が必要なときに気づける |
| 8 | tmux を入れる | 切断しても処理が生き残る |
| 9 | コントロールパネルの2要素認証を設定する | 認証アプリがスマホに入っている |
4と5は必ず別セッションで確認しながら進めてください。この2つが締め出し事故の二大原因です。
9について補足すると、さくらインターネットは 2025年12月3日から会員認証時の2要素認証を必須化しており、対象は会員メニューだけでなく会員IDとパスワードで認証する全ページに及びます(さくらのサポート情報)。サーバーの鍵を守っても、コントロールパネルを乗っ取られたら OS 再インストールで全部持っていかれます。 ここは省略できません。
社内ネットワークにあるサーバーや、踏み台の向こう側にあるサーバーへスマホから入る場合は、スマホから踏み台経由で SSH する方法 を参照してください。エージェント転送(ssh -A)ではなく ProxyJump(ssh -J)を使うのが原則です。
TermAI での運用
TermAI は iOS / Android の SSH・SFTP クライアントです。この記事の文脈では、次の3点が効いてきます。
鍵は端末内で生成またはインポートされ、iOS Keychain / Android Keystore に保管されます。 秘密鍵がサーバーに送信されることはありません。国内VPSの契約直後にやることは、TermAI で鍵を作る → 公開鍵をコピーする → コントロールパネルのサーバー作成画面に貼る、の3手です。パネル側で鍵を生成して秘密鍵をダウンロードする経路を通らずに済みます。
Tailscale を内蔵しています。 22番をインターネットに公開したくない場合、VPS に Tailscale を入れてスマホと同じ仮想ネットワークに置けば、パネル側フィルタで 22番を閉じたまま運用できます。CGNAT でモバイル回線の送信元IPが固定できない問題も、ここで消えます(スマホからサーバーを管理する)。
AI 機能は意図的に「提案型」です。 journalctl -u nginx --since "10 min ago" -p err --no-pager のようなコマンドを入力行に書くだけで、実行するかどうかは人が判断します。本番サーバーで確認なしにコマンドが走る設計は選んでいません(AI のシェル提案をどこまで信じるか)。ソフトキーボードでの打鍵量が減るので、外出先からの緊急対応で実用速度になります。無料枠は AI 提案が1日5回、SSH と SFTP は無制限です。