Sudo
を実行すると、端末が数秒間動かなくなり、エラーメッセージが出力されます。私の端末は次のようになります。
ubuntu@(none):~$ Sudo true
Sudo: unable to resolve Host (none)
それを解決するために何ができますか?
確認する2つのこと(マシンがmy-machine
と呼ばれる場合、これを適宜変更できます):
/etc/hostname
ファイルにマシンの名前のみが含まれていること。
/etc/hosts
にはlocalhost
のエントリがあります。次のようなものが必要です。
127.0.0.1 localhost.localdomain localhost 127.0.1.1 my-machine
これらのファイルのいずれかが正しくない場合(Sudoを実行できないため)、マシンを再起動して復旧モードにし、変更を加えてから、通常の環境で再起動する必要があります。
編集/etc/hosts
を実行し、新しいホスト名を127.0.0.1行に追加します(または、必要に応じて新しい行を作成します)。
私のように見えます:
127.0.0.1 localhost localhost.localdomain penguin
# The following lines are desirable for IPv6 capable hosts
::1 ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
/etc/hostname
ファイルに記載されているように、上記の例のpenguin
を新しいホスト名に置き換えます。
次のようにホスト名を/etc/hosts
に追加します。
echo $(hostname -I | cut -d\ -f1) $(hostname) | Sudo tee -a /etc/hosts
、これは この質問 に対する答えであり、これと統合されています。
ホスト名(dave00-G31M-ES2L
)は/etc/hosts
で表されません。 L
を次の行に追加します。
127.0.1.1 dave00-G31M-ES2
したがって、次のようになります。
127.0.1.1 dave00-G31M-ES2L
これを実現するには、コンソールを開きます(押します Ctrl+Alt+T)およびタイプ:
Sudo gedit /etc/hosts
前述のように文字L
を追加し、保存して終了します。
VPSでUbuntuを使用していたときにこの問題が発生しました。/etc/hostsファイルを編集して解決しました。
次のコマンドを実行します:
Sudo nano /etc/hosts
次に追加します:
127.0.0.1 localhost.localdomain localhost
127.0.1.1 ubuntu
それがあなたの問題を解決することを願っています:)
PS:コンピューターを再起動することを忘れないでください!
/ etc/hostnameファイルと/ etc/hostsファイルのホスト名が一致しても、同じ問題が発生していました。
私のホスト名は「staging_1」でした。ホスト名にアンダースコアを使用できないことが判明したため、このエラーが発生していました。アンダースコアをハイフンに変更すると、問題が解決しました。
AWSで、vpcに移動して「DNSホスト名」をオンにします。
これと同じエラーメッセージが表示されました。 AWS開発者フォーラムのこのディスカッションスレッドは、より良いソリューションだと思います。
"VPC管理コンソールに移動し、VPCを選択し、[アクション]をクリックし、[DNSホスト名の編集]を選択して、[はい]を選択します。"
質問で示される症状は、このより具体的な問題と強く相関している可能性があります。
$ hostname --fqdn
hostname: Temporary failure in name resolution
これを解決する方法はいくつかありますが、そのうちの1つは/etc/hosts
にホスト名をlocalhostとして追加することです(他のいくつかの回答に示されているように)。これは一般的に正しいことかもしれませんが、唯一可能な解決策ではありません。
「完全修飾ドメイン名」は、外部DNSサーバーなどによって提供される場合があります(ネットワーク上で利用可能な場合)。この場合、/etc/hosts
にエントリがなくても、Sudo
は文句を言いません。
注:Sudo
は、必ずしも必須ではありませんが、sudoersファイルのオプション機能により、ホスト名の間接参照を試みます。 ホスト名を検索しようとするsudoコマンド を参照してください。
遅延が長すぎない限り、このエラーメッセージは通常無害です。
一部のターミナルエミュレータは、エミュレータを閉じて再起動するまで、プロンプトを正しいホスト名で更新しません(lxterminal、私はあなたに話している)。
hostnameおよびhostsファイルを編集し、Sudo service hostname restart
を実行してからSudo hostname
を実行し、ホスト名がプロンプトに古い値が表示されていた場合でも、新しい値。
私の場合、それは問題でした。hostname
で使用できるパラメータがあるかどうかを知りたいので、man
をhostname
に変更しました。代わりに、それは私のhostname
をman
に変更し、いつもあなたと同じメッセージを受け取りました
Sudo: unable to resolve Host (none)
ホスト名を「localhost」に戻した後、すべてが再び正常に機能しました
hostname localhost
誰でも/etc/hosts
を変更することをお勧めします。ただし、場合によってはこれが不可能な場合があります(たとえば、Dockerコンテナー内)。だから、私はより良い方法を見つけなければならなかったし、これを思いついた:
echo "alias Sudo='Sudo -h 127.0.0.1'" >> ~/.bash_aliases
source ~/.bashrc
エイリアスはbashスクリプトでは機能しませんが、変数を使用できます:Sudo='Sudo -h 127.0.0.1'
申し訳ありませんが、「ホストを解決できません」と表示されているので、実行してみてください:
hostname
そして、出力がマシンのホスト名かどうかを確認します。そうでない場合、問題はホスト構成であり、Sudoではありません。
OPが書いた:
すべて/ etc/hostnameにありました。病気のサーバーの2つでは、次のようになりました。
ubuntu@(none):~$ cat /etc/hostname linux-web-n ip-10-128-##-##
この問題のないサーバーでは、次のことができました。
ubuntu@ip-10-128-##-###:~$ cat /etc/hostname ip-10-128-##-###
linux-web-n
部分を削除して再起動しましたが、すべて正常でした。
これと同じ問題がありました!オンライン管理コントロールパネルでVPSの名前を変更しましたが、hostsファイルのマシン名は変更しませんでした。
Sudo nano /etc/hosts
次に、これから編集しました:
127.0.1.1 Megabyte Megabyte
127.0.0.1 localhost
これに:
127.0.1.1 Debian Debian
127.0.0.1 localhost
そしてそれは私のエラーを修正しました!これが役に立てば幸いです!
ホストまたはホスト名ファイルに不正な文字が含まれていると、エラーが発生する可能性があります。次の記号のみが許可されます:a-z、A-Z、0-9
Vagrantを使用している場合は、ゲストにログインしてapt-get --no-install-recommends install virtualbox-guest-utils
を実行します
同じ問題がありました。/etc/hostsファイルの/ etc/hostsファイルと/ etc/hostnameファイルを編集して解決しました。以下に示すように上部を編集するだけです。
#vi /etc/hosts
127.0.0.1 localhost
127.0.1.1 localhost myhostname
#vi /etc/hostname
myhostname
sudoを実行できない場合は、suを介してrootとしてログインできます。 IE:su root(x-termで)。プロンプトが表示されたらrootパスワードを入力し、nanoでファイルを編集できます。 'buntuのルートパスワードは、Sudoに使用するパスワードと同じです。
問題が/etc/hostname
ファイルと/etc/hosts
の場合、両方のファイルに目的のホスト名があり、マシンにエラーが表示されている
Sudo: unable to resolve Host
試し、ホスト名を強制します
Sudo hostname -F /etc/hostname
おそらく同じエラーが表示されますが、ログアウトしてからログインし直してください。