目次
はじめに
Linux環境で sudo
コマンドを実行した際に、以下のようなエラーメッセージが表示されることがあります。
sudo: unable to resolve host myserver: Name or service not known
コマンド自体は動作していても、毎回エラーが出るのは不安になりますよね。
これは ホスト名の設定と /etc/hosts
の記述が一致していない ことが主な原因です。
本記事では、このエラーの原因と解決方法を詳しく解説します。
エラーの原因
1. ホスト名の変更後に /etc/hosts
が更新されていない
Linuxでは、ホスト名(hostname
)と /etc/hosts
の対応が一致していないと名前解決に失敗します。
例えば以下のような状態です:
- 実際のホスト名:
myserver
/etc/hosts
の記述:127.0.0.1 localhost
のみ
この場合、myserver
を名前解決できずエラーとなります。
2. /etc/hosts に誤った書き方をしている
例えば、以下のような設定はNGです。
127.0.0.1 localhost
127.0.1.1 myservr ← スペルミス
hostname
と完全に一致していないと解決できません。
確認手順
1. 現在のホスト名を確認
hostname
または
hostnamectl
例:
myserver
2. /etc/hosts の内容を確認
cat /etc/hosts
正しく設定されていれば、以下のようにホスト名が記載されています。
127.0.0.1 localhost
127.0.1.1 myserver
解決方法
1. /etc/hosts を修正する
もしホスト名が /etc/hosts
に記載されていなければ追記します。
sudo vi /etc/hosts
以下のように、hostname
で確認した名前を一致させて記述します。
127.0.0.1 localhost
127.0.1.1 myserver
2. ホスト名を修正する
もし /etc/hosts
の方が正しい場合は、ホスト名を修正します。
sudo hostnamectl set-hostname myserver
再ログインすると反映されます。
3. 一時的な対処(テスト用)
急ぎの場合は、以下でホスト名を一時変更することも可能です。
sudo hostname myserver
ただし再起動すると元に戻るため、恒久対応には hostnamectl
を使うのがおすすめです。
まとめ
sudo: unable to resolve host
は ホスト名と /etc/hosts の不一致 が原因hostname
と/etc/hosts
の両方を確認し、正しく一致させる- 恒久的に修正する場合は
hostnamectl
と/etc/hosts
を揃える
一見「sudoが壊れたのでは?」と焦ってしまうエラーですが、落ち着いてホスト名の設定を確認すればすぐに解決できます。
よくあるエラーと解決方法まとめ
あわせて読みたい


【完全版】sudoエラー大全|よくある原因と解決方法まとめ
Linux でシステム管理を行う際、sudo コマンドは欠かせない存在です。通常は root 権限を安全に利用するための仕組みですが、環境や設定によってさまざまなエラーが発生…