sudo: unable to resolve host エラーの原因と対処(ホスト名と /etc/hosts の不一致問題)

  • URLをコピーしました!
目次

はじめに

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が壊れたのでは?」と焦ってしまうエラーですが、落ち着いてホスト名の設定を確認すればすぐに解決できます。

よくあるエラーと解決方法まとめ
目次