【Ubuntu】hostnamectlによるホスト名の変更

【Ubuntu】hostnamectlによるホスト名の変更 サーバー

「Ubuntuでホスト名を変更したい」
「一時的ではなく恒久的にhostnameを変更したい」

このような場合には、この記事の内容が参考になります。
この記事では、hostnamectlによるホスト名の変更を解説しています。

本記事の内容

  • hostnamectlとは?
  • hostnamectlによるホスト名の変更
  • hostnamectlにsudoを付けないと認証が必要になる

それでは、上記に沿って解説していきます。

hostnamectlとは?

hostnamectlは、システムのホスト名や関連する設定を確認するためのコマンドです。
Linuxであれば、ディストリビューション問わずにデフォルトで利用できます。

主に、hostnamectlはホスト名の変更で利用することになります。
ホスト名の変更と言えば、「/etc/hostname」を変更する方法もあります。

しかし、「/etc/hostname」を直接変更する方法はオススメしません。
反映させるのに、他にも処理が必要です。

hostnamectlであれば、コマンド一撃で済みます。
hostnamectlの使い方については、ヘルプで確認できます。

$ hostnamectl -h
hostnamectl [OPTIONS...] COMMAND ...
Query or change system hostname.
Commands:
  status                 Show current hostname settings
  set-hostname NAME      Set system hostname
  set-icon-name NAME     Set icon name for host
  set-chassis NAME       Set chassis type for host
  set-deployment NAME    Set deployment environment for host
  set-location NAME      Set location for host
Options:
  -h --help              Show this help
     --version           Show package version
     --no-ask-password   Do not prompt for password
  -H --host=[USER@]HOST  Operate on remote host
  -M --machine=CONTAINER Operate on local container
     --transient         Only set transient hostname
     --static            Only set static hostname
     --pretty            Only set pretty hostname

この中で覚えるのは、「set-hostname NAME 」だけでOKです。
他の設定や照会機能は、基本的に利用する機会がありません。

以上、hostnamectlについて説明しました。
次は、hostnamectlによるホスト名の変更を説明します。

hostnamectlによるホスト名の変更

hostnamectlによるホスト名の変更を行います。
検証に用いたOSは、以下。

$ cat /etc/lsb-release 
DISTRIB_ID=Ubuntu 
DISTRIB_RELEASE=20.04 
DISTRIB_CODENAME=focal 
DISTRIB_DESCRIPTION="Ubuntu 20.04.4 LTS"

まずは、変更する前に現状のホスト名を確認します。

$ hostname 
ubuntu-focal

上記ホスト名は、「/etc/hostname」ファイルの内容と同じです。

$ cat /etc/hostname 
ubuntu-focal

では、ホスト名を変更します。
ホスト名を変更するコマンドは、以下。

hostnamectl set-hostname 変更後のホスト名

Ubuntuであれば、「sudo」を付けて実行します。
「sudo」を付けないと認証が必要になり、面倒なことになります。
(※認証については、後述しています)

「test001」というホスト名に変更するためのコマンドを実行した結果は、以下。

$ sudo hostnamectl set-hostname test001 
$

コマンドを実行しても、何も表示されません。
先ほどと同じ方法でホスト名を確認しましょう。

$ hostname 
test001 
$ cat /etc/hostname 
test001

両方の確認方法により、変更後のホスト名を確認できました。
これにより、恒久的にUbuntuのホスト名を変更することができました。

以上、hostnamectlによるホスト名の変更を説明しました。

hostnamectlにsudoを付けないと認証が必要になる

「sudo」を付けないと、次のようにパスワードを求められます。

$ hostnamectl set-hostname test001
==== AUTHENTICATING FOR org.freedesktop.hostname1.set-static-hostname ===
静的なホスト名を設定するには認証が必要です。
Authenticating as: Ubuntu (ubuntu)
Password:

これだけでは、何のパスワードがわかりません。
rootのパスワードを入力しても、次のようなエラーが表示されます。

polkit-agent-helper-1: pam_authenticate failed: Authentication failure 
==== AUTHENTICATION FAILED === 
Could not set property: Access denied

そもそも、デフォルトでUbuntuにおけるrootのパスワードはありません。
それを設定して、入力してもダメなのです。

では、何のパスワードを入力すべきなのでしょうか?
それは、認証エラーのメッセージに記載されています。

「pam_authenticate failed」です。
このメッセージより、PAM認証におけるパスワードが必要だと言えます。

どうでしょうか?
これが面倒だといった理由です。

それなら、「sudo」を付けてroot権限で実行した方が簡単です。
もしくは、rootになってコマンドを実行するかのどちらかで対応しましょう。

$ sudo su - root
# hostnamectl set-hostname test001 
#
タイトルとURLをコピーしました