↓ メインコンテンツへスキップ
  1. Linux 関連記事一覧/
  2. Ubuntu 26.04 LTS Server/

Ubuntu 26.04 LTS Server のホスト名の変更(hostnamectl)

目次

ホスト名の確認と変更方法

Ubuntu 26.04 LTS Server のホスト名を確認・変更する手順を解説します。ホスト名は hostnamectl コマンドで扱い、恒久的な設定と一時的な設定を区別して管理します。

ホスト名を確認する

hostnamectl を引数なしで実行すると、ホスト名と機器の情報がまとめて表示されます。

ホスト名の確認コマンド
hostnamectl
ホスト名の確認 実行例
kazulog@sv1:~$ hostnamectl
 Static hostname: sv1
       Icon name: computer-vm
         Chassis: vm 🖴
      Machine ID: fa7f95751e0a4b7d896ac94fe4e90998
         Boot ID: d00a5c4e8c18417081176227877c6282
  Virtualization: kvm
Operating System: Ubuntu 26.04 LTS                 
          Kernel: Linux 7.0.0-30-generic
    Architecture: x86-64
 Hardware Vendor: QEMU
  Hardware Model: Standard PC _i440FX + PIIX, 1996_
Hardware Version: pc-i440fx-8.0
Firmware Version: 1.16.3-debian-1.16.3-2
   Firmware Date: Tue 2014-04-01
    Firmware Age: 12y 5month 1w 3d                 
kazulog@sv1:~$ hostname
sv1
kazulog@sv1:~$ uname -n
sv1
kazulog@sv1:~$
項目内容
Static hostname恒久的なホスト名。/etc/hostname に保存され、再起動後も維持される
Transient hostname一時的なホスト名。カーネルが保持し、再起動すると Static の値に戻る。Static と同じ場合は表示されない
Pretty hostname表示用の名前。空白や記号を使える。設定した場合のみ表示される
Machine ID / Boot IDシステムと起動ごとの識別子
Virtualization仮想化基盤の種別

hostname と uname -n は、どちらも現在有効なホスト名(Transient があればその値)を表示します。

ホスト名を恒久的に変更する

ホスト名の変更コマンド
sudo hostnamectl set-hostname [NAME]
入力箇所入力内容
[NAME]設定するホスト名
ホスト名の変更 実行例
kazulog@sv1:~$ sudo hostnamectl set-hostname webserver
kazulog@sv1:~$ hostnamectl | head -3
 Static hostname: webserver
       Icon name: computer-vm
         Chassis: vm 🖴
kazulog@sv1:~$ hostname
webserver
kazulog@sv1:~$ cat /etc/hostname
webserver
kazulog@sv1:~$

/etc/hostname が書き換わり、再起動後も維持されます。

実行中のシェルのプロンプトはすぐには変わりません。 プロンプトはログイン時のホスト名を表示しているためです。ログインし直すと新しいホスト名になります。

再ログイン後のプロンプト 実行例
kazulog@webserver:~$ hostname
webserver
kazulog@webserver:~$ whoami
kazulog

/etc/hosts との関係

hostnamectl set-hostname は /etc/hostname を更新しますが、/etc/hosts は更新しません。上の実行例でも、ホスト名を変更した後の /etc/hosts には元の名前が残っています。

変更後の /etc/hosts 実行例
kazulog@sv1:~$ grep 127.0 /etc/hosts
127.0.1.1 ubuntu sv1
127.0.0.1 localhost
kazulog@sv1:~$ sudo true
kazulog@sv1:~$ echo $?
0

このため、システムによっては sudo の実行時に sudo: unable to resolve host という警告が出ることがあります。ただし Ubuntu 26.04 では、この警告は通常出ません。 名前解決を担う systemd-resolved が自分自身のホスト名に応答するためです。

名前解決の確認 実行例
kazulog@webserver:~$ getent hosts webserver; echo exit=$?
fe80::5054:ff:fe6f:31df webserver
exit=0
kazulog@webserver:~$ getent hosts sv1
127.0.1.1       ubuntu sv1
kazulog@webserver:~$ sudo -n true; echo exit=$?
exit=0

getent が自分自身のリンクローカルアドレスを返しており、sudo も警告なく実行できています。警告が出る環境では、/etc/hosts の 127.0.1.1 の行を新しいホスト名に書き換えてください。

ホスト名を一時的に変更する

再起動すると元に戻る一時的な変更には、hostname コマンドを使います。

ホスト名の一時的な変更コマンド
sudo hostname [NAME]
ホスト名の一時的な変更 実行例
kazulog@webserver:~$ sudo hostname dbserver
kazulog@webserver:~$ hostname
dbserver
kazulog@webserver:~$ hostnamectl | head -3
Transient hostname: dbserver
   Static hostname: webserver
   Pretty hostname: Kazulog Web Server
kazulog@webserver:~$ cat /etc/hostname
webserver
kazulog@webserver:~$ uname -n
dbserver

hostnamectl の表示に Transient hostname が現れ、Static hostname とは別の値になります。/etc/hostname は変わっていないため、再起動すると Static の値に戻ります。

hostnamectl set-hostname --transient [NAME] でも一時的な変更ができますが、Static hostname が設定済みの場合は反映されません。次のように案内が表示されます。

hostnamectl --transient を使った場合 実行例
kazulog@webserver:~$ sudo hostnamectl set-hostname --transient dbserver
Hint: static hostname is already set, so the specified transient hostname will not be used.
kazulog@webserver:~$ hostnamectl | head -2
 Static hostname: webserver
       Icon name: computer-vm
kazulog@webserver:~$ hostname
webserver
kazulog@webserver:~$ cat /etc/hostname
webserver
kazulog@webserver:~$

一時的に変更したい場合は hostname コマンドを使ってください。

表示用の名前(Pretty hostname)

ホスト名には使えない空白や記号を含む名前を、表示用として別に設定できます。

表示用の名前の設定コマンド
sudo hostnamectl set-hostname --pretty "[NAME]"
表示用の名前の設定 実行例
kazulog@webserver:~$ sudo hostnamectl set-hostname --pretty 'Kazulog Web Server'
kazulog@webserver:~$ hostnamectl | head -3
 Static hostname: webserver
 Pretty hostname: Kazulog Web Server
       Icon name: computer-vm
kazulog@webserver:~$ cat /etc/machine-info
PRETTY_HOSTNAME="Kazulog Web Server"

設定は /etc/machine-info に保存されます。空の文字列を指定すると削除できます。

再起動後の確認

再起動すると、Transient hostname は Static hostname の値に戻ります。Static hostname と Pretty hostname はそのまま維持されます。

再起動後の状態 実行例
kazulog@webserver:~$ hostnamectl | head -3
 Static hostname: webserver
 Pretty hostname: Kazulog Web Server
       Icon name: computer-vm
kazulog@webserver:~$ hostname
webserver
kazulog@webserver:~$ cat /etc/hostname
webserver
kazulog@webserver:~$ grep 127.0 /etc/hosts
127.0.1.1 ubuntu sv1
127.0.0.1 localhost

クラウドや仮想基盤では、起動時にホスト名が上書きされることがあります。 cloud-init を使う環境では、設定に応じて初回起動時にホスト名が設定されます。上書きを防ぐには /etc/cloud/cloud.cfg の preserve_hostname を true にします。

cloud-init の設定 実行例
kazulog@webserver:~$ grep -E 'preserve_hostname|manage_etc_hosts' /etc/cloud/cloud.cfg
preserve_hostname: false
kazulog@webserver:~$

この検証環境では preserve_hostname: false ですが、ホスト名の設定は初回起動時にのみ行われるため、上の再起動では上書きされませんでした。構築時にホスト名を設定する方法は初期設定を自動化する(cloud-init)で解説しています。

ホスト名を元に戻す

ホスト名を戻す 実行例
kazulog@webserver:~$ sudo hostnamectl set-hostname sv1
kazulog@webserver:~$ sudo hostnamectl set-hostname --pretty ''
kazulog@webserver:~$ hostnamectl | head -2
 Static hostname: sv1
       Icon name: computer-vm
kazulog@webserver:~$ cat /etc/hostname
sv1
kazulog@webserver:~$

検証環境と実行ログ

本記事の実行例は、CML 上の Ubuntu 26.04 LTS Server で採取したものです。各手順の実行ログを以下からダウンロードできます。

手順実行ログ
初期状態の確認log
ホスト名の変更と /etc/hosts の確認log
名前解決と sudo の確認log
再ログイン後のプロンプトlog
–transient と表示用の名前log
hostname コマンドによる一時的な変更log
再起動後の状態log
cloud-init の設定log
ホスト名を元に戻すlog

参考リンク

hostnamectl(1) - systemd documentation

関連記事

Ubuntu 公式ページ