提供を受けた検証について:本記事の検証には、エックスサーバー株式会社から無償提供を受けた「XServer VPS クラウド」の利用環境(VPS〈Linux〉・メモリ4GB/vCPU 4コア・ディスク50GB/1ヶ月)を使っています。記事の内容・評価は当サイトが独自に行っており、提供元の確認・承認を受けていません。
結論:当サイトの検証機では、申込み時・OS再インストール時にSSH鍵を登録しても、sshdの設定ではパスワード認証とrootのログインが有効のままでした(Ubuntu 24.04・AlmaLinux 9の2回)。契約したら、①作業用ユーザーを作る ②SSHを鍵だけにする ③パケットフィルターで必要なポートだけ開ける ④閉め出されたときのコンソールを確かめる、の順に進めると安全です。
エックスサーバーのVPSには通常版とクラウド型のXServer VPS クラウドがあり、この記事はクラウドの手順です(通常版は2026年10月6日に新規受付を再開)。契約直後に行うSSHまわりの初期設定を、2026年9月12日と27〜28日に検証機で確かめた手順でまとめます。
SSH鍵を登録すれば、パスワードでは入れなくなる?
当サイトの検証機では、鍵を登録した後もsshdの設定でパスワード認証が有効でした。自分で確かめて止めるのが確実です。
| OS | 確かめた時点 | rootのログイン | パスワード認証 |
|---|---|---|---|
| Ubuntu 24.04 | 2026年9月12日・鍵を登録して再インストールした直後 | yes | yes |
| AlmaLinux 9(WordPress〈KUSANAGI〉のセットアップスクリプト) | 2026年9月27日・セットアップの完了後 | yes | yes |
値はsshdの実効設定(sshd -T)です。公式マニュアルは、登録した公開鍵をサーバーへ設定することで「ログイン方法を鍵認証のみに制限することができます」と説明していますが、検証機ではそうなっていませんでした。なお、この状態で実際にパスワードでログインできるかまでは試していません。
sshd -T | grep -E '^(permitrootlogin|passwordauthentication) '
ステップ1:作業用ユーザーはどう作る?
rootのまま作業せず、sudoを使えるユーザーを作ってから、rootのログインを止めます。
AlmaLinux 9.8で確かめたコマンドです(rootで実行)。rootに登録された公開鍵を、作業用ユーザーにも写します。
useradd -m -G wheel ops passwd ops install -d -m 700 -o ops -g ops /home/ops/.ssh install -m 600 -o ops -g ops /root/.ssh/authorized_keys /home/ops/.ssh/authorized_keys
別の端末で ssh ops@サーバーのIPアドレス と鍵で入り、sudo でパスワードを聞かれたうえでroot権限の操作ができることを確かめます(検証機では sudo whoami が root を返しました)。この passwd のパスワードは、SSHではなくsudoの確認に使います。
ステップ2:SSHを鍵だけにするには?
sshd_config.dに、先に読まれる名前でファイルを置きます。sshdは同じ項目を最初に読んだ値で決めるためです。
# /etc/ssh/sshd_config.d/01-hardening.conf PasswordAuthentication no KbdInteractiveAuthentication no PermitRootLogin no
AlmaLinux 9では sshd_config の先頭近くで sshd_config.d/*.conf を読み込み、既存の 50-redhat.conf があります。man sshd_configの「first obtained value will be used」のとおり、01- で始めると先に読まれます。rootも鍵で使い続けるなら、PermitRootLogin は no の代わりに prohibit-password にします。
sshd -t && systemctl reload sshd
Ubuntuではサービス名が ssh です。反映したら、今の接続を閉じる前に別の端末で次の2つを確かめます。
# 鍵で入れる ssh ops@サーバーのIPアドレス # 鍵を使わない接続は拒否される ssh -o PubkeyAuthentication=no -o PreferredAuthentications=password ops@サーバーのIPアドレス
検証機では、鍵を使わない接続が Permission denied (publickey,gssapi-keyex,gssapi-with-mic) で拒否され、提示される方式にパスワードがありませんでした(Ubuntu 24.04では publickey だけ)。PermitRootLogin no にしたUbuntuでは、rootの鍵での接続も拒否されました。
ステップ3:パケットフィルターはどう設定する?
使うポートだけを許可するフィルターを作って、VPSに適用します。SSHは自分の接続元だけに絞るのが安全です。
公式マニュアルによると、パケットフィルターを適用しないVPSは、すべてのポートへの通信が遮断されます。当サイトの検証機は、SSH(22)を自分の接続元のIPv4アドレスだけ、Web(80・443)を全体に許可する3行にしました。公式は、OS側のファイアウォールと動作が重なる可能性にも触れているので、どちらで絞るかを決めておくと混乱しません。
閉め出されたらどうする?
公式マニュアルでは、SSHで入れなくなってもコントロールパネルのコンソール接続から直せるとされています。
公式マニュアルでは、SSHで接続できない場合でもコンソール接続(画面で操作するVNCコンソールと、文字で操作するシリアルコンソール)で状態の確認や設定の修正ができ、ログインにはrootとrootパスワード(申込み時またはOS再インストール時に設定したもの)を使います。当サイトはコンソールからの復旧までは試していませんが、鍵だけにした後もrootパスワードは控えておきます。
OSの更新と再起動は?
更新でカーネルが新しくなっても、再起動するまでは古いカーネルのまま動きます。
AlmaLinux 9の検証機では、dnf -y upgrade の後も動いているカーネル(uname -r)は 5.14.0-362.8.1.el9_3 のままで、needs-restarting -r が再起動が必要と表示しました。再起動すると入っていた 5.14.0-687.51.1.el9_8 に切り替わり、再起動を指示してから外からのSSHで入れるまで約10秒でした(同じ検証機での計3回で約10〜12秒)。
dnf -y upgrade needs-restarting -r
まとめ:契約したら最初に何を確かめる?
鍵を登録したかどうかにかかわらず、sshd -T でパスワード認証とrootのログインの設定を自分で確かめ、作業用ユーザー・鍵だけのSSH・パケットフィルターの順に絞ります。閉め出されたときのためにコンソールとrootパスワードを確かめておけば、安心して設定を進められます。

コメント