この記事の監修:宮崎智広(Linux実務・教育歴20年以上・受講者3,100名超)
そう感じている方に向けて、今回は1ページで全工程をなぞれる初期設定の決定版をまとめます。
インストール直後のサーバーは、言わば「素のままのスーツ」です。仕立て直してから現場に出さないと、ちょっとした風で着崩れます。私自身、検証用のVPSや社内サーバーで26.04を何度も初期設定してきましたが、毎回同じ10項目を同じ順序でこなしています。順番を間違えると、SSHから締め出されたりufwで自分のセッションを切ったりと、笑えない事故が起きます。
この記事では、Ubuntu 26.04 LTSサーバーで最初にやるべき初期設定10項目を、コマンド例と実出力を交えて順番通りに解説します。Ubuntu 26.04 LTSの変更点を先に把握したい方は「Ubuntu 26.04 LTS 変更点まとめ」を、まだインストールが済んでいない方は「Ubuntu 26.04 LTS インストール手順|USBメモリ作成からデスクトップ起動まで全工程」を先に読んでおくと、本記事の内容がそのまま手を動かす流れにつながります。
この記事のポイント
・初期設定はSSH鍵→UFW→自動更新の順で進めるのが事故が少ない
・apt updateより先にミラーをjp.archive/jaistへ切り替えると速い
・sshd_configはPasswordAuthentication noの前に必ず鍵で疎通確認
・unattended-upgradesでセキュリティ更新だけ自動化するのが現実解
でも安心してください。プロのエンジニアはコマンドを暗記していません。
「現場で使える型」を効率よく使いこなしているだけです。
1. apt updateとミラー設定の見直し
最初にやるのはパッケージリストの更新ですが、その前にミラー(パッケージの取得元サーバー)を日本のものに切り替えておくと、後の作業全部が速くなります。デフォルトのミラーは `archive.ubuntu.com` で、海外経由になることが多いです。jaistまたはjp.archiveに変更します。
・jp.archive.ubuntu.com:Ubuntu公式の日本ミラー、安定性重視
・ftp.jaist.ac.jp:北陸先端科学技術大学院大学のミラー、国内最速クラス
私は普段jaistを使っています。回線が太い検証環境ならjp.archiveでも体感差は小さいです。
# 既存のsources.listをバックアップする $ sudo cp /etc/apt/sources.list.d/ubuntu.sources /etc/apt/sources.list.d/ubuntu.sources.bak # sedでミラーを一括置換する(jaistの場合) $ sudo sed -i 's|http://archive.ubuntu.com/ubuntu|https://ftp.jaist.ac.jp/pub/Linux/ubuntu|g' /etc/apt/sources.list.d/ubuntu.sources $ sudo sed -i 's|http://security.ubuntu.com/ubuntu|https://ftp.jaist.ac.jp/pub/Linux/ubuntu|g' /etc/apt/sources.list.d/ubuntu.sources # パッケージリストを更新する $ sudo apt update ヒット:1 https://ftp.jaist.ac.jp/pub/Linux/ubuntu plucky InRelease 取得:2 https://ftp.jaist.ac.jp/pub/Linux/ubuntu plucky-updates InRelease [110 kB] 取得:3 https://ftp.jaist.ac.jp/pub/Linux/ubuntu plucky-security InRelease [110 kB] パッケージリストを読み込んでいます... 完了 # 既存パッケージをアップグレードする $ sudo apt upgrade -y
ミラー切替後はリポジトリのURLが正しく反映されているか、`apt update` 実行時の取得元行を必ず目視確認してください。「ヒット:1 https://ftp.jaist.ac.jp/...」のように出ていればOKです。海外ミラーのままだと、後続のapt installが体感で2倍3倍遅くなります。
2. タイムゾーンとロケール設定
サーバーの時刻がUTCのままだと、ログを読む時に毎回9時間引き算する羽目になります。最初にAsia/Tokyoに変更しておきます。# 現在のタイムゾーンを確認する $ timedatectl Local time: Fri 2026-04-24 10:23:45 UTC Universal time: Fri 2026-04-24 10:23:45 UTC Time zone: Etc/UTC (UTC, +0000) System clock synchronized: yes NTP service: active # Asia/Tokyoに変更する $ sudo timedatectl set-timezone Asia/Tokyo # 変更を確認する $ timedatectl | grep "Time zone" Time zone: Asia/Tokyo (JST, +0900)
ロケール(言語環境)はサーバー用途では `en_US.UTF-8` のままでも問題ありませんが、日本語のメッセージが欲しい場合は `ja_JP.UTF-8` を追加します。
# 現在のロケールを確認する $ locale LANG=C.UTF-8 LANGUAGE= LC_CTYPE="C.UTF-8" ... # 日本語ロケールを生成する $ sudo locale-gen ja_JP.UTF-8 $ sudo update-locale LANG=ja_JP.UTF-8 # 再ログイン後に反映を確認する $ locale | grep LANG LANG=ja_JP.UTF-8
3. ホスト名とhostsファイルの設定
ホスト名は後から変えるとログ集約や監視ツールの設定がズレるので、最初に確定させます。# 現在のホスト名を確認する $ hostnamectl Static hostname: ubuntu Icon name: computer-vm Chassis: vm Machine ID: 9a8b7c6d5e4f3a2b1c0d9e8f7a6b5c4d Boot ID: 1234567890abcdef1234567890abcdef Virtualization: kvm Operating System: Ubuntu 26.04 LTS Kernel: Linux 6.14.0-15-generic Architecture: x86-64 # ホスト名を変更する $ sudo hostnamectl set-hostname web01.example.local # hostsファイルにエントリを追加する $ sudo vi /etc/hosts
# /etc/hostsの編集例 127.0.0.1 localhost 127.0.1.1 web01.example.local web01 ::1 localhost ip6-localhost ip6-loopback
4. SSH鍵認証の設定とパスワード認証OFF
ここからが本題です。SSH鍵を設定し、パスワード認証を無効化します。順序を間違えるとSSHから自分が締め出されます。手順は必ず以下の順で進めてください。
・手順A:クライアント側で鍵ペアを生成する
・手順B:公開鍵をサーバーへ転送する
・手順C:鍵だけで接続できることを確認する
・手順D:確認できてからパスワード認証をOFFにする
クライアント(手元のPC)側で鍵ペアを作ります。
# クライアント側で鍵ペアを生成する(Ed25519推奨) $ ssh-keygen -t ed25519 -C "your_email@example.com" Generating public/private ed25519 key pair. Enter file in which to save the key (/home/user/.ssh/id_ed25519): Enter passphrase (empty for no passphrase): ******** Enter same passphrase again: ******** Your identification has been saved in /home/user/.ssh/id_ed25519 Your public key has been saved in /home/user/.ssh/id_ed25519.pub # 公開鍵をサーバーへコピーする $ ssh-copy-id user@192.168.1.45
# サーバー側で.sshディレクトリを作成する $ mkdir -p ~/.ssh $ chmod 700 ~/.ssh # authorized_keysに公開鍵を追記する $ vi ~/.ssh/authorized_keys $ chmod 600 ~/.ssh/authorized_keys
鍵で入れることが確認できたら、`/etc/ssh/sshd_config` を編集します。
# sshd_configを編集する $ sudo vi /etc/ssh/sshd_config # 該当行を以下のように変更する PasswordAuthentication no PubkeyAuthentication yes PermitRootLogin no PermitEmptyPasswords no # 設定の構文チェック $ sudo sshd -t # サービスを再起動する $ sudo systemctl restart ssh
再起動後、必ず別ターミナルからもう一度接続テストをします。今のセッションは生かしたまま、新しい窓でログインできれば成功です。失敗してもセッションが残っていればやり直せます。
SSHのポート番号も変更したい場合は、後述のUFWルールも合わせて変更する必要があります。先にUFWを設定する流れの方が安全です。22番のままでもfail2banやIP制限を併用すれば実用上の問題はありません。「ポート変更すれば安全」という古い考え方は今では通用しないので、ポート変更にこだわるよりは鍵認証のみ・root禁止・接続元IP制限の3点をしっかり固めるほうが効きます。
5. UFWで22/80/443だけ開ける手順
UFW(Uncomplicated Firewall)はiptablesのフロントエンドで、Ubuntuが標準で持っているファイアウォールツールです。シンプルなコマンドで必要なポートだけ開けます。ここでも順序が大事です。**SSHを開ける前に `enable` してはいけません**。SSHから締め出されます。
# 現在のUFWの状態を確認する $ sudo ufw status 状態: 非アクティブ # デフォルトポリシーを設定する $ sudo ufw default deny incoming $ sudo ufw default allow outgoing # SSH(22)・HTTP(80)・HTTPS(443)を許可する $ sudo ufw allow 22/tcp comment 'SSH' $ sudo ufw allow 80/tcp comment 'HTTP' $ sudo ufw allow 443/tcp comment 'HTTPS' # UFWを有効化する $ sudo ufw enable コマンドは既存のssh接続を中断する可能性があります。続行しますか (y|n)? y ファイアウォールはアクティブかつシステム起動時に有効化されます。 # ルールを確認する $ sudo ufw status verbose 状態: アクティブ ロギング: on (low) デフォルト: deny (incoming), allow (outgoing), disabled (routed) 新しいプロファイル: skip To Action From -- ------ ---- 22/tcp ALLOW IN Anywhere 80/tcp ALLOW IN Anywhere 443/tcp ALLOW IN Anywhere
# オフィスIPからのみSSH許可 $ sudo ufw allow from 203.0.113.10 to any port 22 proto tcp # 既存の22/tcpルールを削除する $ sudo ufw status numbered $ sudo ufw delete 1
6. unattended-upgradesで自動セキュリティ更新を有効化
セキュリティ更新を手動でやるのは現実的ではありません。unattended-upgradesでセキュリティパッチだけ自動適用する設定を入れます。# unattended-upgradesをインストールする(多くの場合プリインストール済み) $ sudo apt install -y unattended-upgrades apt-listchanges # 設定ファイルを生成する(対話モードでEnableを選択) $ sudo dpkg-reconfigure --priority=low unattended-upgrades # 設定内容を確認する $ cat /etc/apt/apt.conf.d/50unattended-upgrades | grep -E '^[^/]' | head -20 Unattended-Upgrade::Allowed-Origins { "${distro_id}:${distro_codename}"; "${distro_id}:${distro_codename}-security"; "${distro_id}ESMApps:${distro_codename}-apps-security"; "${distro_id}ESM:${distro_codename}-infra-security"; };
# テスト実行(実際には適用しない、ログに何が更新されるか出力) $ sudo unattended-upgrades --dry-run --debug # 実行ログを確認する $ sudo tail -30 /var/log/unattended-upgrades/unattended-upgrades.log
7. 一般ユーザー作成とsudo権限付与
rootで日常作業をするのは事故のもとです。作業用の一般ユーザーを作り、sudo経由で特権操作する形に統一します。# 一般ユーザーを作成する $ sudo adduser deploy ユーザー `deploy' を追加しています... 新しいユーザー `deploy' (1001) をグループ `deploy' (1001) で追加しています... ホームディレクトリ `/home/deploy' を作成しています... 新しい UNIX パスワードを入力してください: ******** 新しい UNIX パスワードを再入力してください: ******** passwd: パスワードは正しく更新されました # sudoグループに追加する $ sudo usermod -aG sudo deploy # 確認 $ id deploy uid=1001(deploy) gid=1001(deploy) groups=1001(deploy),27(sudo)
sudo時にパスワードを毎回求められるのが煩わしい場合は、`visudo` で以下を追加します。
# 専用ファイルで管理する(推奨) $ sudo visudo -f /etc/sudoers.d/deploy # 以下を記述 deploy ALL=(ALL) NOPASSWD:ALL
8. DNSとhostsの動作確認
サーバーが外部の名前解決を正しくできるか確認します。`resolvectl` でsystemd-resolvedが管理するDNSの状態を見ます。# 現在のDNS設定を確認する $ resolvectl status Global Protocols: -LLMNR -mDNS -DNSOverTLS DNSSEC=no/unsupported resolv.conf mode: stub Link 2 (enp0s3) Current Scopes: DNS Protocols: +DefaultRoute +LLMNR -mDNS -DNSOverTLS DNSSEC=no/unsupported Current DNS Server: 192.168.1.1 DNS Servers: 192.168.1.1 # 名前解決のテスト $ resolvectl query www.google.com www.google.com: 142.250.207.36 -- link: enp0s3 2404:6800:4004:818::2004 -- link: enp0s3
# netplan設定ファイルを確認する $ ls /etc/netplan/ 01-network-manager-all.yaml # DNSを固定する設定例 $ sudo vi /etc/netplan/01-netcfg.yaml network: version: 2 ethernets: enp0s3: dhcp4: true nameservers: addresses: [1.1.1.1, 8.8.8.8] # 設定を反映する $ sudo netplan apply
9. ログローテーションと監視の基本確認
Ubuntu 26.04では `journalctl` がメインのログ閲覧コマンドです。systemd-journaldのログサイズ制限を確認しておきます。# 現在のジャーナルサイズを確認する $ journalctl --disk-usage Archived and active journals take up 168.0M in the file system. # 最大サイズを設定する(/etc/systemd/journald.confを編集) $ sudo vi /etc/systemd/journald.conf # 該当行のコメントを外して値を設定 SystemMaxUse=500M SystemKeepFree=1G # 設定を反映する $ sudo systemctl restart systemd-journald # 古いジャーナルを掃除する $ sudo journalctl --vacuum-time=30d $ sudo journalctl --vacuum-size=200M
ディスク容量の枯渇はサーバー停止の典型的な原因です。`/var/log` が肥大化してルートパーティションを食いつぶすと、SSHログインすらできなくなることがあります。最初のうちに `df -h` をcronで毎日メールする仕組みを入れておくか、PrometheusやMackerelのような監視ツールでアラートを設定しておくと、慌てなくて済みます。
10. 設定後の動作確認コマンド集
ここまでの設定が正しく入ったかを確認するコマンドをまとめます。1セットでチェックすれば見落としがありません。# 1. OSバージョン $ lsb_release -a Distributor ID: Ubuntu Description: Ubuntu 26.04 LTS Release: 26.04 # 2. タイムゾーンとNTP $ timedatectl | grep -E 'Time zone|synchronized' Time zone: Asia/Tokyo (JST, +0900) System clock synchronized: yes # 3. ホスト名 $ hostnamectl --static web01.example.local # 4. SSHのリッスン状態 $ sudo ss -tlnp | grep ssh LISTEN 0 128 0.0.0.0:22 0.0.0.0:* users:(("sshd",pid=1234,fd=3)) # 5. SSH設定の確認 $ sudo sshd -T | grep -E 'passwordauthentication|permitrootlogin|pubkeyauthentication' permitrootlogin no pubkeyauthentication yes passwordauthentication no # 6. UFWの状態 $ sudo ufw status verbose # 7. unattended-upgradesの動作 $ systemctl is-active unattended-upgrades active # 8. DNS解決 $ resolvectl query www.google.com # 9. 起動済みサービス一覧 $ systemctl list-units --type=service --state=running --no-pager | head # 10. 直近のエラーログ $ sudo journalctl -p err -n 20 --no-pager
本記事のまとめ
| 項目 | 要点 |
|---|---|
| 1. apt updateとミラー | jp.archiveまたはjaistへ切替、26.04はdeb822形式 |
| 2. タイムゾーン・ロケール | timedatectl set-timezone Asia/Tokyoを最初に |
| 3. ホスト名・hosts | FQDNを/etc/hostsに必ず登録 |
| 4. SSH鍵認証 | 鍵で疎通確認してからPasswordAuthentication no |
| 5. UFW | 22/80/443を開けてからenable、デフォルトdeny |
| 6. unattended-upgrades | セキュリティ更新のみ自動、通常更新は手動 |
| 7. 一般ユーザー | adduser→sudoグループ、SSH鍵も設定 |
| 8. DNS確認 | resolvectlで状態確認、固定はnetplanで |
| 9. ログローテーション | journaldのサイズ制限とlogrotate確認 |
| 10. 動作確認 | 10コマンドのチェックリストで全項目検証 |
本記事ではUbuntuのカーネル管理(HWEとGAの違い、apt-mark holdでのバージョン固定など)には触れていません。本番運用でカーネル更新を意図的に制御したい方は「Ubuntu 26.04 カーネル管理の基本|HWE・GAの違いとアップデート制御コマンド」の記事は近日公開予定です。
また、初期設定後に起こりがちなトラブル(起動しない、ネット繋がらない、GUI落ちる等)への対処法は「Ubuntu 26.04でよくあるトラブル12選|起動しない・ネット繋がらない・GUI落ちる時の対処」の記事も近日公開予定です。事前に目を通しておくと、いざという時の復旧が早くなります。
20年以上Linuxサーバーの構築・運用を続けてきた中で、初期設定の手抜きが後々のトラブルにつながるケースを何度も見てきました。「とりあえず動いたから本番投入」ではなく、本記事の10項目を通して「自分の手で固めた」状態にしてから運用に入るほうが、結果的に楽です。
3,100名以上が実践した「型」を無料で公開中
プロのエンジニアはコマンドを暗記していません。
「現場で使える型」を効率よく使いこなしているだけです。
その「型」を図解60Pにまとめた入門マニュアルを、完全無料でプレゼントしています。
登録10秒/合わなければ解除3秒 / 詳細はこちら
- 次のページへ:Ubuntu 26.04でよくあるトラブル12選|起動しない・ネット繋がらない・GUI落ちる時の対処
- 前のページへ:Ubuntu 26.04 LTS インストール手順|USBメモリ作成からデスクトップ起動まで全工程
- この記事の属するカテゴリ:Linux学習ガイド・Ubuntuへ戻る

無料メルマガで学習を続ける
Linuxの実践スキルをメールで毎週お届け。
登録は1分、解除もいつでも可。
登録無料・いつでも解除できます