2026年5月25日

2026年5月25日

VPSのホスト名を変更する方法:hostnamectl・/etc/hosts・cloud-initの設定

VPS のホスト名は、申し込み時に事業者が付けた名前(さくらのVPSなら ik1-…vs.sakura.ne.jp のような名前)になっていることが多く、用途に合わせて web01 などに変えたくなります。ここでは systemd を使う現行の Linux(Ubuntu 22.04 / 24.04、Debian 12、AlmaLinux・Rocky Linux 9 など)でホスト名を変える手順を説明します。

ホスト名を変えても、サイトのドメイン名や WordPress の URL、DNS のレコードは変わりません。サーバーが自分自身を呼ぶ名前が変わるだけです。

ホスト名に使える文字

  • 英小文字・数字・ハイフン(-)を使う。ハイフンで始めたり終えたりしない
  • 1つのラベル(ドット区切りの1区切り)は63文字まで
  • systemd の静的ホスト名は64文字まで

/etc/hostname には web01 のような短い名前を入れ、web01.example.com のような完全修飾名(FQDN)は /etc/hosts で対応させる方法が、Debian・Ubuntu で一般的です。以下はこの方法で説明します。

手順1:今のホスト名を確認する

hostnamectl

Static hostname: の行が今のホスト名です。

手順2:hostnamectl でホスト名を変える

sudo hostnamectl set-hostname web01

このコマンドは /etc/hostname を書き換え、その場で反映します。再起動は不要です。/etc/hostname を直接エディタで書き換える方法もありますが、その場合は再起動するまで反映されないため、hostnamectl を使うほうが手間がかかりません。

手順3:/etc/hosts を新しい名前に合わせる

/etc/hosts に古いホスト名が残っていると、sudo を実行するたびに sudo: unable to resolve host web01: Name or service not known のような警告が出たり、hostname -f で FQDN が取れなかったりします。

sudoedit /etc/hosts

古いホスト名の行を新しい名前に書き換えます。Debian・Ubuntu では、自分のホスト名に 127.0.1.1 を割り当てる行があるのが標準です。

127.0.0.1   localhost
127.0.1.1   web01.example.com web01

# IPv6 の行は変更しない
::1         localhost ip6-localhost ip6-loopback

固定のグローバルIPアドレスを持つサーバーでは、127.0.1.1 の代わりにそのアドレスを書いてもかまいません。AlmaLinux・Rocky Linux には 127.0.1.1 の行が無いので、次のように1行追加します。

203.0.113.10   web01.example.com web01

行の書き方は「IPアドレス、FQDN、短い名前」の順です。

手順4:再起動で元に戻らないようにする(cloud-init)

VPS やクラウドのイメージには、起動時にホスト名や /etc/hosts を設定し直す cloud-init が入っていることがあります。その場合、再起動すると元のホスト名に戻ります。

cloud-init が使われているかを確認します。

ls /etc/cloud/cloud.cfg && cloud-init status

ファイルが無ければ cloud-init は入っていないので、この手順は不要です。入っている場合は、ホスト名を保持する設定を追加します。

sudoedit /etc/cloud/cloud.cfg.d/99-preserve-hostname.cfg
preserve_hostname: true

また、/etc/hosts の先頭に「cloud-init が管理している」という趣旨のコメントがある場合は、/etc/hosts も起動時に作り直されます。同じファイルに次の1行を加えると、cloud-init が /etc/hosts を書き換えなくなります。

manage_etc_hosts: false

手順5:反映を確認する

hostnamectl          # Static hostname が新しい名前か
hostname             # 短い名前
hostname -f          # FQDN(/etc/hosts の設定が効いているか)
getent hosts web01   # 名前からIPアドレスを引けるか

シェルのプロンプト(ubuntu@古い名前:~$)は、ログインし直すと新しい名前になります。

cloud-init を使っている環境では、一度再起動して、ホスト名が戻らないことも確認しておきます。

sudo reboot
# 再接続後
hostnamectl

ホスト名と一緒に見直すもの

対象 確認すること
メールサーバー(Postfix など) myhostname は、/etc/postfix/main.cf に書かれていなければホスト名から決まります。Debian・Ubuntu ではインストール時に古いホスト名が書き込まれていることがあるので、postconf myhostname で確認し、直したら sudo systemctl reload postfix
逆引きDNS(PTR) OS のホスト名とは別物です。設定できる事業者では、VPS のコントロールパネルで変更します。メール送信に使うサーバーは、正引きと逆引きを一致させておくと受信側で拒否されにくくなります
正引きDNS web01.example.com で外からアクセスしたい場合は、DNS に A レコードを追加します。ホスト名を変えるだけでは名前解決されません
ログ・監視 ログに記録されるホスト名が変わります。監視サービスや集計でホスト名を使っているなら、合わせて変更します

SSH の接続には影響しません。手元の ~/.ssh/known_hosts は接続に使った名前や IP アドレスで記録されており、サーバーのホスト鍵も変わらないため、同じ IP アドレスで接続する限り鍵の再登録は不要です。

お気軽にご相談ください

お見積りへ お問い合わせへ
▲