Kagoyaでサーバを初期化するとSSHが繋がらない問題(pingで直る話)

Kagoya(カゴヤ・ジャパン)の VPS を、新規作成ではなく**コントロールパネルからのOS再インストール(初期化)**で作り直したとき、なぜか最初だけ外部から SSH が繋がらない、という現象に毎回ハマっています。

結論から言うと、初期化したサーバ自身から ping 8.8.8.8 を一発打つと直ります。理屈はわかっていないのですが、再現性は高く、私の環境では契約以来ずっとこの挙動です。同じところで詰まる人のために、現象と暫定対処、調べた範囲を残しておきます。

注意

これは原因が特定できていない経験則ベースの対処メモです。「pingで直る」のは事実ですが、根本原因の解明には至っていません。同じ症状でも環境によっては別の要因の可能性があります。

現象

  • Kagoya のコントロールパネル(GUI)から OS を再インストール(初期化) する
  • 起動後、別のサーバから SSH で接続しようとすると応答がない(タイムアウトする)
  • ところが、初期化したサーバ側のコンソール(GUIのコンソール)からは普通に操作できる
  • そのコンソールから外向きに ping 8.8.8.8 を打つと、そこから急に外部 SSH が通るようになる

新規にサーバを「作成」した場合は問題なく繋がります。「初期化(再インストール)」したときだけこの症状が出る、というのがやっかいなところです。

暫定対処:初期化したサーバから外向きにpingを打つ

外部から SSH が無反応なので、ここは Kagoya の Web GUI(コントロールパネル)からコンソールを立ち上げて、そこからサーバにログインし、ping を打ってください。SSH ではなく Web コンソール経由なのがポイントです。

Kagoya の Web GUI でコンソールを立ち上げる

Kagoya のコントロールパネル(Web GUI)から、対象サーバの コンソール(VNC等)を起動します。

コンソールからサーバにログインする(root+コンソールログインパスワード)

立ち上げたコンソール画面で、サーバに直接ログインします(外部からの SSH が通らなくても、このコンソールからは操作できます)。

ここでのログインは root ユーザで行い、パスワードは**初期化(再インストール)時に指定した「コンソールログインパスワード」**を使います。外部からの SSH 接続で使う rocky ユーザ+鍵とは別物なので注意してください。

外向きに ping を打つ

ログインしたら、外向きに ping を一発打ちます。

bash
ping -c 4 8.8.8.8
出力
PING 8.8.8.8 (8.8.8.8) 56(84) bytes of data.
64 bytes from 8.8.8.8: icmp_seq=1 ttl=116 time=2.34 ms
64 bytes from 8.8.8.8: icmp_seq=2 ttl=116 time=2.31 ms
...

これだけで、それまで無反応だった外部からの SSH が通るようになります。宛先は 8.8.8.8(Google Public DNS)でなくても、外部に到達するアドレスなら何でも構いません。

ヒント

外向きに一度トラフィックを発生させるのがポイントのようです。ping が通らない環境なら、curl https://example.comdnf check-update のような外向き通信でも代替できる可能性があります(ICMP が遮断されているケース向け)。

ノート

正直なところ、Kagoya は 「パスワード」「秘密鍵」「公開鍵」がそれぞれどこにどう設定されているのかが分かりにくいです。整理すると:

認証情報どこで使う何を使うか
コンソールログインパスワードWeb GUI のコンソール(root ログイン)初期化時に指定したパスワード
公開鍵サーバ側(rocky ユーザの authorized_keysGUI で登録した公開鍵が自動設置
秘密鍵(.key手元 → 外部からの SSH 接続「ログイン用認証キー追加」でDLした鍵

このあたりはおそらく Kagoya の公式サイトのどこかに記載があるはずなので、正確な仕様は公式ドキュメントもあわせて確認してください。

調べたこと(が、いずれも空振り)

「サーバ側の設定が悪いのでは」と思って、次のあたりを一通り見直しましたが、いずれも問題は見つかりませんでした

firewalld を止めてみる

ファイアウォールが SSH を弾いているのかと思い、一時的に停止して確認。

bash
sudo systemctl stop firewalld
sudo firewall-cmd --list-all

→ 停止しても、ping を打つまでは外部 SSH は通らなかった。firewalld は原因ではない

sshd の設定を見直す

ListenAddressAddressFamily、ポート設定など、sshd_config を確認。

bash
sudo sshd -T | grep -Ei 'listenaddress|port|addressfamily'
sudo systemctl status sshd

→ sshd は正常に起動し、ローカルからは応答する。設定上の問題は見当たらない

リンク・経路を確認する

インターフェースや経路、ARP/近隣テーブルもチェック。

bash
ip -br addr
ip route
sudo ss -tlnp | grep :22

→ IP は正しく付与され、22番でリッスンしている。見た目には異常なし。

それでも ping 8.8.8.8 を打った瞬間に直るので、サーバ内部の設定というより、初期化直後のネットワーク経路(上流)側が、外向きの通信を一発見るまで戻りパケットを通さないような挙動に見えます。あくまで推測です。

ノート

心当たりとしては、上流スイッチ/仮想ネットワークの MAC アドレス学習ARP テーブルの更新タイミングあたり。初期化でサーバ側の状態がリセットされ、上流が新しいサーバの存在を認識するまで「外から入ってくる」通信だけが宙ぶらりんになり、サーバが自分から外へ一発出すと経路が確立する……という仮説です。確証はありません。

わかっていること・いないこと

項目状況
再現条件Kagoya コントロールパネル(GUI)からの OS再インストール(初期化)時
確認したOSRocky Linux 9 のみ(GUIインストール)
新規作成時問題なし
対処初期化したサーバから外向きに ping 8.8.8.8(または外向き通信)を一発
根本原因不明(firewalld / sshd / 経路設定には問題なし)
発生期間契約以来(昨年〜)ずっと同じ症状
Kagoyaへの問い合わせ未実施(ping で直るため運用上困っていない)
  • Rocky 9 でしか試していないので、別 OS のインストールなら起きない可能性があります。
  • 毎回の初期化で忘れていると「あれ、繋がらない…」と無駄に悩むので、初期化したら最初に外向き ping、を儀式にしておくと安全です。

補足:Rocky 9 ではログインユーザは rocky、鍵は GUI 登録のものが入る

そもそも「繋がらない」と思っていた原因が、接続ユーザや鍵の取り違えだった、というのも初期化あるあるです。pingの話とあわせて整理しておきます。

Kagoya の Rocky Linux 9 を GUI から構築した場合:

  • GUI で登録した公開鍵が rocky ユーザに設置されますroot ではない)
  • したがって外部からは rocky ユーザで接続する必要があります
bash
ssh -i <ダウンロードした鍵ファイル>.key rocky@<契約したVPSのIPアドレス>

鍵を Kagoya の GUI で生成した場合

コントロールパネルの 「ログイン用認証キー追加」ボタンから鍵を生成すると、.key ファイル(秘密鍵)が自動でダウンロードされます。その鍵ファイルを -i で指定して接続します。

GUIで認証キーを追加

Kagoya のコントロールパネルで「ログイン用認証キー追加」ボタンから鍵を生成。.key ファイルがダウンロードされる(このとき以外に再ダウンロードできないことが多いので必ず保管)。

鍵ファイルのパーミッションを絞る

ダウンロードした秘密鍵は、所有者だけが読めるようにしておく(緩いと SSH が拒否する)。

bash
chmod 600 ~/Downloads/<ダウンロードした鍵ファイル>.key

rocky ユーザで接続

bash
ssh -i ~/Downloads/<ダウンロードした鍵ファイル>.key rocky@<契約したVPSのIPアドレス>
注意

root@... で繋ごうとして弾かれているだけ、というケースも多いです。Rocky 9 は基本 root の直接 SSH ログインを許可しない設定で、かつ GUI 登録の鍵は rocky ユーザに入ります。「鍵は正しいのに繋がらない」ときは、まず接続ユーザが rocky になっているかを確認してください。

それでも基本は押さえておく

「pingで直るから」で済ませてはいますが、SSH が外から繋がらないときに最初に疑うべき正攻法は変わりません。今回はたまたまどれも該当しませんでしたが、切り分けの基本として:

ファイアウォールで22番が開いているか

bash
sudo firewall-cmd --list-services
sudo firewall-cmd --add-service=ssh --permanent && sudo firewall-cmd --reload

sshd が起動・リッスンしているか

bash
sudo systemctl status sshd
sudo ss -tlnp | grep :22

Kagoya側のパケットフィルタ/セキュリティ設定

Kagoya のコントロールパネルにもパケットフィルタ/セキュリティグループ的な設定がある場合があります。OS のファイアウォールとは別レイヤなので、初期化で設定が戻っていないか・SSH(22) が許可されているかを確認しておくと安心です。

これらに問題がないことを確認したうえで、それでも繋がらないなら——外向きに ping を一発、です。

ノート

もし同じ症状で、原因の心当たりや確かな情報をお持ちの方がいたら、ぜひ知りたいところです。気が向いたら Kagoya にも問い合わせてみようと思います。