※本記事にはアフィリエイト広告(プロモーション)が含まれています。
この記事のコマンドや設定は、執筆時点(2026年7月)に Ubuntu の現行LTS版で動作を確認した内容です。ディストリビューションやパッケージのバージョンで挙動が変わることがあるので、うまくいかないときは各公式ドキュメントもあわせて確認してください。
VPSを契約してサーバーにログインすると、まっさらな Linux が待っています。ここで多くの人が「で、最初に何をすればいいの?」と手が止まります。放っておくと、root のまま作業して事故を起こしたり、パスワードを狙った総当たりログインを浴び続けたりと、地味に危ない状態が続きます。
この記事は、私(Michi)が ConoHa VPS を実際に運用してきた経験をもとに、VPSを借りたら最初にやるべき初期設定を「やることリスト」としてまとめた決定版です。どのVPS・どのLinuxでも共通する考え方と、Ubuntu で使えるコピペ可能なコマンドをセットで載せています。まずはこの記事で全体像とチェックリストをつかみ、Ubuntu 26.04 の細かい手順は後半でリンクする専用記事に進む、という流れがおすすめです。
- ① パッケージ更新:
apt update && apt upgradeで既知の穴を先に塞ぐ - ② 作業用ユーザー作成:root常用をやめ、
sudoで権限を借りる形にする - ③ SSH鍵認証:パスワードより桁違いに強い鍵でログインできるようにする
- ④ rootログイン・パスワード認証の停止:SSHの入口を締める
- ⑤ ファイアウォール(ufw):使うポートだけ開ける
- ⑥ 自動セキュリティ更新:
unattended-upgradesで放置でも修正を当て続ける - ⑦ タイムゾーン・ロケール・swap:運用しやすく整える
上から順にやれば、「借りたまま」の危ないサーバーが「最低限守れる公開サーバー」になります。
そもそもVPSの初期設定はなぜ必要?
VPS(Virtual Private Server)は、契約した瞬間からグローバルIPを持つ「インターネットに直結したサーバー」です。共用レンタルサーバーと違ってroot権限で何でもできる代わりに、守りも自分の責任になります。
「そもそも自分はVPSでいくべきか、共用レンタルサーバーで十分か」がまだ固まっていない人は、先に次の記事で立ち位置を決めておくと、この後の設定作業が無駄になりません。

公開した直後から、世界中の自動スキャンが 22番ポート(SSH)を叩いてきます。初期状態は「root+パスワードでログイン可能」なことが多く、これは総当たり攻撃にとって一番おいしい的です。初期設定の目的をひとことで言えば、「入口を鍵認証だけに絞り、被害の起点になりやすい root 常用をやめる」こと。ここさえ押さえれば、実運用でよく見る事故の大半は防げます。
この記事の対象OS(まずはOS選びから)
本記事は、私も本番で使っている ConoHa VPS + Ubuntu(現行LTS) を前提に書いています。サーバー用途で LTS(長期サポート版)を選ぶ理由は、サポート期間が長く「気づいたらサポート切れ」になりにくいからです。最新LTSの正確なバージョンとサポート期限は Ubuntu 公式で確認してください。
「そもそもUbuntuでいいの? AlmaLinux や Rocky Linux は?」と迷う人は、OS選びを比較した記事を先に読むと納得して進めます。vps unix vps os といったキーワードで気になっている、Unix系とLinuxの違い・ディストリビューションの選び方はこちらにまとめています。

Ubuntu を選ぶべき理由をもう少し深掘りした記事もあります。

ConoHa VPS で Ubuntu サーバーを用意する
まずはサーバー本体を作ります。ここでは ConoHa VPS を例にしますが、他社VPSでも「OSイメージに Ubuntu を選ぶ」流れは同じです。
- プランを選ぶ:Ubuntu はメモリ 1GB 以上が目安。まず試すなら小さめのプランでかまいません。
- イメージタイプで「OS」→「Ubuntu」→ 最新LTSを選択:ConoHa VPS は複数バージョンが用意されているので、長く使うなら最新LTSを選びます。
- rootパスワードとSSHキーを設定:ここで安全側に倒すなら、この時点でSSHキーを登録しておくと後がラクです(手元に鍵がなければ「新規作成」でOK。秘密鍵は必ずダウンロードして保管)。
- 「追加」でサーバー作成:数十秒〜数分で起動します。
- IPアドレスを確認:詳細画面のグローバルIPをメモします。
補足:ConoHa VPS では「追加IP(固定IP)」を後から足すこともできます。1台で複数サービス(例:サイト用とメール用でIPを分ける)を運用したいときに使いますが、最初の初期設定では標準の1IPで十分です。
SSHでの初回接続は、SSHキーを登録した場合は秘密鍵を指定してつなぎます。
ssh -i ~/.ssh/秘密鍵ファイル root@サーバーのIPアドレスつながらないときは、ConoHa のセキュリティグループ(仮想ファイアウォール)でSSH(22番)が許可されているかを確認してください。どうしても通らないときは、コントロールパネルの「コンソール」からブラウザ経由で直接ログインできます。
▼ 本記事の手順で使っているVPSはこちら(私も本番運用中です)
VPS初期設定の手順(Ubuntu・コピペOK)
ここからが本番です。上から順に実行してください。特にSSH周り(③→④)は順番を守らないと自分が締め出されるので、そこだけ慎重に。
なお、この記事は「どのVPSでも共通のやること」を各STEPの要点コマンドで押さえるハブという位置づけです。Ubuntu 26.04 LTS を前提に、fail2ban やホスト名設定まで含めて1本で通して構築する手順は、後半でリンクする専用記事(/archives/384)にまとめています。手を動かしながら通しで進めたい人は、全体像をこの記事でつかんだうえで384へ進むのがスムーズです。
⚠️ sudo の付け方について:以下のコマンドは、作業用ユーザーを作ったあと(STEP2以降)にそのユーザーで操作する前提で
sudoを付けています。まだ root で接続したまま作業している段階(STEP1など)ではsudoは不要です(root は最初から全権限を持つため)。root のまま実行する場合はsudoを外して読み替えてください。
まずインストール済みのソフトを最新化します。セキュリティ修正もここで当たります。
sudo apt update
sudo apt upgrade -yカーネル更新が入ったら、sudo reboot で一度再起動しておくと安心です。
root は何でもできる分、ミスや乗っ取りの被害が一気に広がります。普段は一般ユーザーで作業し、必要なときだけ sudo で権限を借りる形にします。例として michi を作ります(名前はお好みで)。
sudo adduser michi
sudo usermod -aG sudo michiパスワードだけしっかり設定すれば、氏名などは空欄でEnterでかまいません。
次のSTEPでパスワードログインを止めるので、その前に作業ユーザーで鍵ログインできる状態を作ります。手元のPCに鍵がなければローカルで作成します。
ssh-keygen -t ed25519 -C "michi@laptop"作った公開鍵をサーバーの作業ユーザーへ登録します。
ssh-copy-id -i ~/.ssh/id_ed25519.pub michi@サーバーのIPアドレス登録できたら、別のターミナルを開いて ssh michi@IPアドレス で入れることを必ず確認してから次へ進みます。ここを飛ばすと締め出されます。
作業ユーザーで鍵ログインできたら、SSHの入口を締めます。今どきの Ubuntu は設定ファイルを直接いじらず、/etc/ssh/sshd_config.d/ にドロップイン設定を置くのが作法です。
ここで最大のハマりどころがあります。sshd は同じ項目が複数あった場合、最初に読んだ値が勝つ(後から上書きされない)仕様です。ドロップインはファイル名の順に読まれるため、99- のような大きい番号を付けると、クラウド事業者のイメージに最初から入っている 50-cloud-init.conf(PasswordAuthentication yes を含むことがある)に先を越されて無効化されます。だから番号は小さくします。
sudo nano /etc/ssh/sshd_config.d/00-hardening.conf次を書いて保存します。
# rootでの直接ログインを禁止
PermitRootLogin no
# パスワード認証を禁止(鍵認証のみ)
PasswordAuthentication no
# 公開鍵認証を有効に
PubkeyAuthentication yes保存したらSSHを再起動して反映します。
sudo systemctl restart ssh再起動したら、設定が本当に効いているかを必ず確認します。sshd が最終的に採用した値を表示させるコマンドです。
sudo sshd -T | grep -Ei 'passwordauthentication|permitrootlogin'passwordauthentication no と permitrootlogin no が返れば成功です。もし yes が返るなら、先に読まれている別のドロップイン(50-cloud-init.conf など)に負けています。ls /etc/ssh/sshd_config.d/ で中身を確認し、該当ファイルの記述を消すか、自分の設定ファイルの番号をさらに小さくしてください。
Ubuntu 標準の ufw で、使うポートだけ開けます。SSHを許可してから有効化しないと自分が入れなくなるので順番に注意。
sudo ufw allow OpenSSH
sudo ufw enable
sudo ufw statusWebサーバーを動かすなら、あとで sudo ufw allow 80,443/tcp のように必要な穴だけ追加します。
毎回手で更新するのは続きません。セキュリティ更新だけでも自動で当たるようにします。
sudo apt install unattended-upgrades -y
sudo dpkg-reconfigure --priority=low unattended-upgrades「自動更新を有効にするか」と聞かれたら「はい」を選びます。
ログの時刻がずれると障害調査がつらいので、日本時間に合わせます。
sudo timedatectl set-timezone Asia/Tokyo日本語ロケールを使いたい場合と、メモリの小さいプランでのswap作成(例:2GB)は次のとおりです。
# 日本語ロケール
sudo apt install language-pack-ja -y
sudo update-locale LANG=ja_JP.UTF-8
# swap(メモリの少ないプラン向け)
sudo fallocate -l 2G /swapfile
sudo chmod 600 /swapfile
sudo mkswap /swapfile
sudo swapon /swapfile
echo '/swapfile none swap sw 0 0' | sudo tee -a /etc/fstab古い初期設定記事(この記事の旧版を含む)では、SSHへの接続元を絞るのに /etc/hosts.allow と /etc/hosts.deny(TCP Wrapper)を編集する手順がよく載っていました。私も昔はこれを書いていましたが、今はおすすめしません。
TCP Wrapper のサポートは OpenSSH 6.7 で本体から削除されており、現在の多くの環境では hosts.allow / hosts.deny を書いても sshd には効きません(ディストリのビルドによっては libwrap を独自に残している例もあり、環境差があります)。「設定したつもりで実は素通し」が一番危ないパターンです。
接続元IPを絞りたいなら、いまは ufw(sudo ufw allow from 許可IP to any port 22 proto tcp) や ConoHa のセキュリティグループで制御するのが現実的です。自分の環境で libwrap が有効かどうかは、最新の公式情報で確認してください。
設定が終わったら「再ログイン」で完了確認
締めの設定をしたら、必ず新しいターミナルで作業ユーザーとして鍵ログインし直して、入れることを確認します。ここで入れれば成功。もし弾かれても、今つないでいる元のセッションが生きているうちなら設定を戻せます(だから元のセッションはすぐ閉じないこと)。
# 手元のPCから
ssh michi@サーバーのIPアドレス
# 入れたら sudo が使えることも確認
sudo whoami # → root と返ればOK注意したいのは、この鍵ログイン成功だけでは「パスワード認証が閉じたこと」の確認にはならない点です。鍵ログインは設定に関係なく通るので、STEP で実行した sudo sshd -T | grep -Ei 'passwordauthentication|permitrootlogin' が両方 no を返すことを、こちらでも必ず見てください。ここを飛ばすと、hosts.allow と同じ「設定したつもりで素通し」になります。
ここまでで、公開サーバーとして最低限守れる状態になりました。
Ubuntu 26.04 の細かい手順はこちら(fail2ban・hostname まで)
前述のとおり、この記事は「どのVPSでも共通のやることリスト=全体像のハブ」に絞っています。Ubuntu 26.04 LTS を前提に、fail2ban やホスト名設定まで含めた1本通しの手順(コピペで最後まで進められる版)は専用記事にまとめました。この記事でやることの見取り図をつかんだら、実際の構築はこちらへ。

VPS代は「事業の経費」——手取りへの効き方も知っておく
少し視点を変えた話を。フリーランス・個人事業主にとって、VPSの月額料金は事業に関わる支出です。事業に使う分は原則として経費に計上できます(プライベートと兼用しているなら家事按分など、状況によって扱いは変わります。詳細は国税庁の情報や税理士に確認してください)。うまく計上できれば、実質的な負担は「額面そのまま」ではなくなります。
「経費が増えると手取り(=税・社会保険を引いた後の手残り)はどう変わるのか」をざっくり把握しておくと、ツールやサーバーへの投資判断がしやすくなります。年収・経費を入れて手取りの目安を試算できるツールを用意しているので、事業の数字を眺めるついでに触ってみてください。あわせて、月の目標額から「1時間あたりいくら稼げばいいか」を出したいときは適正時給・単価逆算ツール(/tools/hourly-rate/)も便利です。
よくある質問(FAQ)
- root のまま全部やってはダメですか?
-
動くには動きますが、おすすめしません。操作ミスの影響が大きく、root が乗っ取られた時点でサーバー全体を握られます。作業ユーザー+
sudoにしておくだけで、事故の被害をかなり小さくできます。 - SSHのポート番号は22番から変えるべき?
-
変えても「本質的な安全」は大きく上がりませんが、自動スキャンやログのノイズは減ります。
ただし現行の Ubuntu(22.10 以降。24.04 / 26.04 を含む)では、SSH が systemd のソケットアクティベーション(
ssh.socket)で待ち受けるため、sshd_configにPortを書くだけでは待ち受けポートは変わりません。「変えたつもりで22番のまま」という事故が起きます。ポートを変えるなら次の手順です。# ssh.socket 側の待ち受けポートを変更する sudo systemctl edit ssh.socketエディタが開いたら、
[Socket]に既定値を一度空にしてから新しいポートを指定します。[Socket] ListenStream= ListenStream=2222sudo systemctl daemon-reload sudo systemctl restart ssh.socketそのうえで ufw と ConoHa のセキュリティグループの両方で新しいポートを許可してください(片方だけだと締め出されます)。なお
PermitRootLoginやPasswordAuthenticationのような認証まわりの設定は従来どおりsshd_config.d+sudo systemctl restart sshで反映されます。 - どのVPS会社を選べばいい?
-
初心者なら日本語のコントロールパネルとサポートがある事業者が無難です。私は ConoHa VPS を使っていますが、料金・スペック・キャンペーンは変わるので、最新は各社の公式サイトで比較してください。OS選びで迷う場合は、先に紹介したOS比較記事を参考にどうぞ。
- Ubuntu以外(AlmaLinux等)でも手順は同じ?
-
考え方(更新→作業ユーザー→鍵認証→入口を締める→ファイアウォール)は共通です。ただしパッケージ管理コマンドは Ubuntu が
apt、AlmaLinux/Rocky はdnfと異なり、ファイアウォールもfirewalldが標準です。各OSの公式ドキュメントで読み替えてください。
まとめ
VPSの初期設定は、突き詰めれば 「入口を鍵だけに絞り、root常用をやめる」 の一点に集約されます。この記事の7ステップを上から順にやれば、借りたままの危ないサーバーが、最低限守れる公開サーバーになります。
- 作業は一般ユーザー+sudoで行い、rootの常用をやめる
- SSHは鍵認証だけにして、rootログインとパスワード認証を止める
- ufw で入口を絞り、自動更新でセキュリティ修正を当て続ける
- 古い
hosts.allow/denyによるIP制限は現行で効かないことが多い。制御は ufw かセキュリティグループで
初期設定が終わったら、いよいよサーバーで何かを動かす番です。Ubuntu 26.04 での通し手順や、メールサーバーのスパム対策(Rspamd)など、続きの記事も用意しています。
—
出典・参考(更新日 2026-07-09 / 調査時点:2026年7月)
- Ubuntu 公式ドキュメント(リリース・サポート期限):https://documentation.ubuntu.com/
- ConoHa VPS Ubuntu イメージ・SSH接続:https://doc.conoha.jp/products/vps-v3/image-v3/image-os-v3/ubuntu-v3/
- OpenSSH における TCP Wrapper(libwrap)サポート削除(6.7)についての解説:https://fedoraproject.org/wiki/Changes/Deprecate_TCP_wrappers
- ufw 公式マニュアル:https://manpages.ubuntu.com/manpages/noble/en/man8/ufw.8.html

コメント