hostnamectlコマンドでLinuxのホスト名を変更する方法|static・transient・prettyの使い分けもコマンド

宮崎智広 この記事の監修:宮崎智広(Linux実務・教育歴20年以上・受講者3,100名超)
HOMELinux技術 リナックスマスター.JP(Linuxマスター.JP)Linuxtips, Linuxコマンド > hostnamectlコマンドでLinuxのホスト名を変更する方法|static・transient・prettyの使い分けもコマンド
「サーバーを構築したあとでホスト名を変えたいけれど、hostnameコマンドで変更しても再起動すると元に戻ってしまう」

この悩み、現場でもよくあります。原因は、hostnameコマンドで変更できるのが一時的な(transient)ホスト名だけで、恒久的な(static)ホスト名は/etc/hostnameを書き換える必要があるからです。

この記事では、systemdが標準になったRHEL 9系・Ubuntu 24.04 LTSで動作確認済みの hostnamectl コマンドの使い方を解説します。static・transient・prettyの3種類のホスト名の違いから、恒久的な変更手順、システム情報の確認、トラブル対処まで実務で必要な範囲を網羅します。

この記事のポイント

・hostnamectl set-hostname で再起動後も残るホスト名を設定できる
・static・transient・prettyの3種類は用途ごとに使い分ける
・/etc/hostsの更新を忘れるとsudoコマンドが遅くなる落とし穴
・hostnamectl status でOS・カーネル・仮想化まで一気に確認できる


「このままじゃマズい」と感じていませんか?
参考書を開く気力もない、同年代に取り残される不安——
でも安心してください。プロのエンジニアはコマンドを暗記していません。
「現場で使える型」を効率よく使いこなしているだけです。
図解60P/登録10秒/解除も3秒 / 詳細はこちら

なぜhostnamectlなのか?hostnameコマンドとの違い

従来の hostname コマンドは、メモリ上のホスト名をその場で書き換えるだけで、/etc/hostname には反映されません。そのため再起動すると元のホスト名に戻ってしまいます。

hostnamectl は systemd-hostnamed というサービス経由でホスト名を管理するコマンドで、RHEL 7以降・CentOS 7以降・Ubuntu 16.04以降の主要ディストリビューションで標準搭載されています。/etc/hostname への書き込みと実行中プロセスへの反映を1コマンドで同時に行ってくれるため、現場では hostnamectl を使うのが定石です。

# 現在のホスト名の状態を確認する $ hostnamectl status Static hostname: web01.example.local Icon name: computer-vm Chassis: vm Machine ID: 3f6b8c1d9a4e42b7xxxxxxxxxxxxxxxx Boot ID: a2c4d8e6f0b94137xxxxxxxxxxxxxxxx Virtualization: kvm Operating System: Red Hat Enterprise Linux 9.4 (Plow) CPE OS Name: cpe:/o:redhat:enterprise_linux:9::baseos Kernel: Linux 5.14.0-427.28.1.el9_4.x86_64 Architecture: x86-64 Hardware Vendor: Red Hat Hardware Model: KVM

ホスト名の3つの種類を理解する

hostnamectl が扱うホスト名は3種類あります。用途が異なるため、最初に整理しておきましょう。

1. Static hostname(恒久的なホスト名)

/etc/hostname に書き込まれる、本来のホスト名です。再起動後も維持されます。サーバー管理では基本的にこれを設定します。英数字・ハイフン・ドット(FQDN形式)のみ使用可能です。

2. Transient hostname(一時的なホスト名)

カーネルが保持する実行中のホスト名です。DHCPサーバーから配布されたホスト名や、hostnameコマンドで変更した値がここに入ります。再起動すると消えます。

3. Pretty hostname(表示用ホスト名)

人間が読みやすい説明的な名前です。空白や日本語、記号も使えます。/etc/machine-info に保存されます。GUIの設定画面などで表示されますが、サーバーの識別には使いません。

# 3種類のホスト名を個別に確認する $ hostnamectl --static web01.example.local $ hostnamectl --transient web01.example.local $ hostnamectl --pretty 本番Webサーバー 01号機

ホスト名を変更する基本手順

1. 現在のホスト名を確認する

作業前に必ず現状を控えておきます。変更前の値はロールバック時に必要です。

$ hostnamectl status | grep -i hostname Static hostname: localhost.localdomain

2. 新しいホスト名を設定する

staticホスト名を変更すると、transientも同じ値に追随します。通常はこれだけでOKです。

# FQDN形式で設定する(推奨) $ sudo hostnamectl set-hostname web01.example.local # ドメインなしでも設定可能 $ sudo hostnamectl set-hostname web01

3. 変更を確認する

bashのプロンプトは現在のシェルセッションでは更新されないため、一度ログインし直すか、新しいシェルを起動して確認します。

# 新しいシェルを起動して確認 $ bash [user@web01 ~]$ hostname web01.example.local # /etc/hostname も書き換わっている $ cat /etc/hostname web01.example.local

4. /etc/hostsを合わせて更新する

ここが一番の落とし穴です。/etc/hosts に自身のホスト名が登録されていないと、sudo 実行時に名前解決のタイムアウトが発生し、数秒~数十秒の遅延が出ます。必ずセットで更新してください。

$ sudo vi /etc/hosts # 変更前 127.0.0.1 localhost localhost.localdomain # 変更後 127.0.0.1 localhost localhost.localdomain web01 web01.example.local

Linux DNS 設定の基本

種類ごとに個別指定する実務Tips

デフォルトでは set-hostname は3種類すべてを同じ値に変更しますが、--static・--transient・--pretty のオプションで個別に指定できます。

# staticだけ変える(/etc/hostnameのみ書き換え) $ sudo hostnamectl set-hostname web01.example.local --static # prettyだけ変える(表示用の名前) $ sudo hostnamectl set-hostname "本番Webサーバー 01号機" --pretty # transientだけ変える(再起動で消える) $ sudo hostnamectl set-hostname tmp-web01 --transient

prettyホスト名に空白や日本語を含める場合はダブルクォートで囲ってください。そのままだとシェルが引数として分解してしまいエラーになります。

hostnamectl statusで取得できる情報

hostnamectl は単なるホスト名管理ツールではなく、システムの基本情報を一気に確認できるコマンドでもあります。サーバー構築の初動確認で重宝します。
Operating System:ディストリビューションとバージョン
Kernel:カーネルバージョン(トラブル対応時に必須)
Architecture:x86-64 / aarch64 などCPUアーキテクチャ
Virtualization:kvm / vmware / microsoft などハイパーバイザー種別
Chassis:vm / server / laptop などハードウェア種別
Machine ID:/etc/machine-id の値(systemdが各ホストを一意に識別するID)

uname や cat /etc/os-release を個別に叩く代わりに hostnamectl 一発で大半の情報が揃うため、新しい現場に入った初日はまずこれを打ちます。
dmidecode でハードウェア情報を取得する方法と合わせて覚えておくと、サーバーの棚卸しがさらに効率化できます。

chassis・iconの変更

あまり使う機会はありませんが、hostnamectl はchassis(筐体種別)やicon(表示アイコン)も変更できます。監視基盤で分類に使う場合に覚えておくと便利です。

# chassisを明示する(vm/server/desktop/laptop/handsetなど) $ sudo hostnamectl set-chassis server # アイコン名を設定する $ sudo hostnamectl set-icon-name computer-server

「Could not set property: Access denied」が出た時の対処法

sudo なしで hostnamectl set-hostname を実行するとこのエラーが出ます。ホスト名の変更はroot権限が必要です。

# NG例 $ hostnamectl set-hostname web01 Could not set property: Access denied # OK例 $ sudo hostnamectl set-hostname web01

Linux DNS 設定の基本と合わせて、sudo が正しく使える環境か事前に確認しておきましょう。

「Failed to set hostname: Connection timed out」が出た時の対処法

systemd-hostnamed サービスが停止していると、このタイムアウトエラーになります。systemctl でサービスの状態を確認し、起動し直します。

# サービスの状態を確認 $ systemctl status systemd-hostnamed # 停止していたら起動 $ sudo systemctl start systemd-hostnamed # 再度ホスト名変更を試す $ sudo hostnamectl set-hostname web01

sudoが遅くなった時の落とし穴

ホスト名を変更した直後から sudo の応答が遅くなった場合、ほぼ間違いなく /etc/hosts の更新漏れです。sudo は内部で自ホスト名の名前解決を行い、失敗するとDNS問い合わせのタイムアウトを待ちます。

# 自ホスト名が解決できるか確認 $ getent hosts $(hostname) 127.0.0.1 web01.example.local web01 # 何も返らない場合は /etc/hosts に追記する $ sudo vi /etc/hosts 127.0.0.1 localhost web01 web01.example.local

getent hosts で自ホスト名が解決できれば、sudo の遅延は解消します。

DHCP環境でホスト名が勝手に変わる時の対処法

クラウドやDHCP環境では、DHCPサーバーがtransientホスト名を上書きしてくる場合があります。意図しない変更を防ぐには、/etc/systemd/resolved.conf や NetworkManager の設定でホスト名の自動設定を無効化します。

# NetworkManager経由でDHCPのホスト名上書きを無効化 $ sudo nmcli connection modify "System eth0" ipv4.dhcp-hostname "" $ sudo nmcli connection modify "System eth0" ipv4.dhcp-send-hostname no # 設定反映 $ sudo nmcli connection up "System eth0"

本記事のまとめ

hostnamectl は systemd 時代のLinuxでホスト名管理の標準コマンドです。3種類のホスト名を理解し、/etc/hostsの更新を忘れないことが現場での鉄則です。
やりたいこと コマンド
現在のホスト名とシステム情報を確認する hostnamectl status
ホスト名を恒久的に変更する sudo hostnamectl set-hostname web01.example.local
staticホスト名だけ変更する sudo hostnamectl set-hostname web01 --static
prettyホスト名を設定する sudo hostnamectl set-hostname "本番Web 01号機" --pretty
staticホスト名だけ取得する hostnamectl --static
chassis種別を変更する sudo hostnamectl set-chassis server
自ホスト名が名前解決できるか確認 getent hosts $(hostname)

ホスト名ひとつで、サーバー運用の信頼度は大きく変わります

ホスト名の設計は、複数台を運用する現場では運用ルールそのものです。命名規則、/etc/hostsの整備、DHCPとの競合管理など、単発のコマンドを知っているだけでは対応できない判断が毎日必要になります。
ネットの切れ端の情報をコピペするだけでなく、現場で通用する安全なLinuxサーバー構築の「型」を体系的に身につけたい方へ、『Linuxサーバー構築入門マニュアル(図解60P)』を完全無料でプレゼントしています。

「独学の時間がもったいない」「プロから直接、現場の技術を最短で学びたい」という本気の方には、2日で実務レベルのスキルが身につく【初心者向けハンズオンセミナー】も開催しています。

無料メルマガで学習を続ける

Linuxの実践スキルをメールで毎週お届け。
登録は1分、解除もいつでも可。

登録無料・いつでも解除できます

暗記不要・1時間後にはサーバーが動く

3,100名以上が実践した「型」を無料で公開中

プロのエンジニアはコマンドを暗記していません。
「現場で使える型」を効率よく使いこなしているだけです。
その「型」を図解60Pにまとめた入門マニュアルを、完全無料でプレゼントしています。

登録10秒/合わなければ解除3秒 / 詳細はこちら

Linux無料マニュアル(図解60P) 名前とメールで30秒登録
宮崎 智広

この記事を書いた人

宮崎 智広(みやざき ともひろ)

株式会社イーネットマーキュリー代表。現役のLinuxサーバー管理者として15年以上の実務経験を持ち、これまでに累計3,100名以上のエンジニアを指導してきたLinux教育のプロフェッショナル。「現場で本当に使える技術」を体系的に伝えることをモットーに、実践型のLinuxセミナーの開催や無料マニュアルの配布を通じてLinux人材の育成に取り組んでいる。

趣味は、キャンプにカメラ、トラウト釣り。好きな食べ物は、ラーメンにお酒。休肝日が作れない、酒量を減らせないのが悩み。最近、ドラマ「フライトエンジェル」を観て涙腺が崩壊しました。