오류 메시지 : "sudo : 호스트를 확인할 수 없음"


737

내가 실행 sudo하면 터미널이 몇 초 동안 멈추고 오류 메시지가 출력됩니다. 내 터미널은 다음과 같습니다

ubuntu@(none):~$ sudo true
sudo: unable to resolve host (none)

그것을 해결하기 위해 무엇을 할 수 있습니까?


2
/etc/hostname및 의 내용을 게시하십시오 /etc/hosts.
정렬

48
이 질문을 너무 현지화하지 않는 것이 좋습니다 . 실수로 자신의 hosts파일 에 하나의 이름을 입력했지만 다른 이름을 입력했다고 생각하는 사용자가 많이 있습니다 . 특히 많은 네트워크에서 컴퓨터의 이름이 비슷하기 때문입니다. 이 질문 (및 답변)은 누군가가 해당 문제를 검색 할 때 표시되며 정확한 철자가 틀리더라도 답변은 그러한 불일치를 확인하라는 메시지를 표시합니다.
Eliah Kagan

9
hostname와 동일한 지 확인하십시오 hosts. 예를 들어 호스트 이름은 ubuntu-pc 이고 호스트는 ubuntu-pc 는 동일해야합니다.
Muhammad Sholihin

1
나는 오늘 이것에 부딪쳤다. 문제는 내가 호스트 이름에있는 것이 / etc / hosts에 없다는 것입니다. 재치 : $ hostname => 'mybox'$ grep 'mybox'/ etc / hosts => 192.168.1.2 mybox.example.com. / etc / hosts => 192.168.1.2에서 도메인 이름 뒤에 'mybox'를 추가해야했습니다. mybox.example.com mybox
Ray

3
이 질문이 보호되어 있고 여기에 충분한 평판이 없기 때문에 답변을 게시 할 수 없습니다. 필자의 경우 network-manager를 다시 시작하여 문제를 해결했습니다 sudo /etc/init.d/network-manager restart. 그러나, 나는 왜 처음 sudo에 네트워크 관련 것들을 기다리는 데 시간을 낭비 하는지 궁금 합니다. 안 sudo네트워크를 사용할 수없는 경우 문제없이 작동?
bli

답변:


999

확인해야 할 두 가지 사항 (컴퓨터가라고 가정하면 my-machine적절하게 변경할 수 있음) :

  1. 그건 /etc/hostname파일이 기계의 이름 만이 포함되어 있습니다.

  2. /etc/hosts에 대한 항목이 있습니다 localhost. 다음과 같은 내용이 있어야합니다.

     127.0.0.1 localhost.localdomain 로컬 호스트
     127.0.1.1 내 기계
    

이러한 파일 중 하나가 올바르지 않으면 (sudo 할 수 없으므로) 시스템을 복구 모드로 재부팅하고 수정 한 다음 일반적인 환경으로 재부팅해야합니다.


31
호스트 이름은 재부팅 할 때까지 변경되지 않습니다. 머신을 재부팅하지 않고 변경하려면 위의 단계를 수행 한 후 실행 후에 "-sudo hostname my-machine"을 실행하여 "sudo hostname"을 실행했는지 확인하십시오. 머신의 호스트 이름이 표시됩니다. 이 방법은 호스트 이름을 변경하기위한 임시 방법으로도 사용될 수 있습니다. 다시 시작한 후 / etc / hostname 파일의 값이 사용됩니다.
Yashvit

2
참고 : sudo를 시작할 수 없으므로 해당 파일을 편집하기가 어렵습니다. 내 솔루션은 내가 변경 든 sudo는 visudo를 할 수 있었다이었다 #%admin ALL=(ALL) ALL%admin ALL=NOPASSWD: ALL다음 재부팅 sudo는 스와, - 다시, / 올바른 호스트 이름을 설정, 해당 파일을 편집, 재부팅, 그리고 모든했다.
Ian M

4
Windows에서 Linux Subsystem을 사용하고 있으며이 문제에 직면했습니다. 귀하의 답변을 따른 후에 해결되었습니다.
amarVashishth

2
당신은 또한 추가해야 할 수도 있습니다 ::1 localhost/etc/hosts(이 루프백 주소 일명 127.0.0.1의 IPv6 버전입니다)
우드 발로

11
왜 예제가 않습니다 127.0.0.1 localhost127.0.1.1 my-machine?
Adam

193

/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

교체 penguin에 명시된대로 새 호스트 이름으로 위의 예에서 /etc/hostname파일.


2
그가 sudo 할 수 없다면 / etc / hosts 파일을 어떻게 편집 할 수 있습니까? 그가 암호로 나쁜 계정을 만들지 않았다면 (나쁜 생각)
Dennis

9
@Dennis sudo해당 메시지가 표시 되더라도 여전히 실행할 수 있습니다 . IIRC는 여전히 호출 할 때마다 비밀번호를 입력해야합니다. 그래도 문제가 해결되지 않으면 복구 콘솔로 재부팅하고 변경 사항을 적용하십시오. 비밀번호가있는 루트 계정은 사용하지 않는 것이 좋습니다.
Lekensteyn

68

다음 /etc/hosts과 같이 호스트 이름을 추가하십시오 .

echo $(hostname -I | cut -d\  -f1) $(hostname) | sudo tee -a /etc/hosts

2
영리하지만 이런 것을 자동화하는 것이 좋은 생각은 아닙니다.
mwfearnley

1
호스트 이름을 호스트 파일에 추가합니다. 루프백 ip 사이에 localhost와 파일 끝으로의 매핑이 없다고 가정하지만,이 줄과 파일 끝 사이에 일부 IPv6 항목이 있습니다.이 경우이 솔루션으로 인해 실제로는 당신이 원하는 것. 관련 의견 :이 파일 또는 다른 파일을 편집하려면 sudo를 사용해야하며 수정하려는 sudo입니다. 여전히 sudo를 실행할 수 있어야합니다. 이 경우 sudo -h hostname을 사용하여 파일에 대한 권한을 먼저 변경하거나 권한을 얻어 편집 할 수 있습니다.
shivesh suman

1
내가 "sudo는 티 ..."그러나 이것은 속임수를 썼는지 수 없기 때문에이 실패 echo $(hostname -I | cut -d\ -f1) $(hostname) | sudo -h 127.0.0.1 tee -a /etc/hosts
로니 Elflein r11lein

31

이것은이 질문에 대한 답변 이며이 질문 에 병합되었습니다.

호스트 이름 ( 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언급 한대로 문자 를 추가하고 저장하고 종료하십시오.


10
생각해 내다! sudoedit(또는 sudo -e)를 사용하십시오 . 선호하는 편집기를 지정하려면 EDITOR환경 변수 (예 :)를 사용하여 export EDITOR=vim편집 할 오프라인 사본을 작성한 다음 편집 후 완전히 겹쳐 씁니다.
Jan

2
그리고 sudo더 이상 없을 때 제안하는 또 다른 사람이 있습니다 sudo. sudo작동하지 않습니다. sudo: unable to resolve host ...
Green

@ 그린 : 아니요 sudo? 언급 한 오류 메시지는 sudo명령 에서옵니다 . 아마도 당신은 다른 것을 의미 했습니까?
Thor

@Green sudo은 잘 작동합니다. 그것은 어떤 상태도 저장할 수 없습니다 (즉, Lekensteyn이 매번 암호를 입력해야한다고 다른 곳에서 말했듯이).
Wlerin

4
W10의 Bash 에이 문제가 있고 Google 에서이 질문에 온다면 이것이 저에게 효과적이었습니다. 127.0.0.1을 "127.0.0.1 localhost DESKTOP-SLQK4CV"처럼 보이도록 변경했습니다 ( "sudo vim / etc / hosts"(vim 초보자를위한 빠른 팁) : 입력하기 전에 i를 누르고 삽입 모드로 전환하려면 esc를 눌러 종료하십시오) 저의 경우 sudo는 작동했지만 DESKTOP-SLQK4CV에 연결할 수 없다고 말했고 저를 위해 일하기 시작했습니다.
Ave

16

VPS에서 우분투를 사용할 때이 문제가 발생했습니다. / etc / hosts 파일을 편집하여 해결했습니다.

이 명령을 실행하십시오 :

sudo nano /etc/hosts

다음을 추가하십시오.

127.0.0.1   localhost.localdomain localhost
127.0.1.1   ubuntu

나는 그것이 당신의 문제를 해결할 수 있기를 바랍니다 :)

PS : 컴퓨터를 재부팅해야합니다!


1
또한 장치 이름 (@ 기호 뒤에 터미널 제목 표시 줄에 인쇄 됨)이 hosts파일 의 두 번째 줄에있는 이름과 일치하는지 확인하십시오 ( Luca의 예에서 "ubuntu"). 첫 번째 줄은 "localhost"일 수도 있습니다.
Waldir Leoncio

2
생각해 내다! sudoedit(또는 sudo -e)를 사용하십시오 . 선호하는 편집기를 지정하려면 EDITOR환경 변수 (예 :)를 사용하여 export EDITOR=vim편집 할 오프라인 사본을 작성한 다음 편집 후 완전히 겹쳐 씁니다.
Jan

11

/ etc / hostname 파일과 / etc / hosts 파일의 호스트 이름이 일치하더라도 동일한 문제가 발생했습니다.

내 호스트 이름은 "staging_1"입니다. 호스트 이름에 밑줄을 사용할 수 없으므로이 오류가 발생하는 것으로 나타났습니다. 밑줄을 하이픈으로 변경하면 문제가 해결되었습니다.


11

AWS에서 vpc로 이동하여 "DNS 호스트 이름"을 켜십시오.


2
askubuntu에 오신 것을 환영합니다! 이것에 조금 확장 할 수 있습니까? (적어도 나에게) 무슨 의미인지는 분명하지 않습니다 ..
Geek

2
이것이 나를 도와주는 대답이었습니다. 마지막으로 본 이후 Amazon AWS가 변경되었습니다. VPC에는 DNS 옵션이 있으며 DNS 확인이 작동하려면 먼저 켜져 있어야합니다.
Chris Moore

1
DNS 호스트 이름 사용 옵션은 vpc 항목의 오른쪽 클릭 메뉴에서 찾을 수 있습니다 (예
Matteo Scotuzzi

없음DNS Hostnames
녹색

7

질문에 제시된 증상은 이보다 구체적인 문제와 밀접한 관련이있을 수 있습니다.

$ hostname --fqdn
hostname: Temporary failure in name resolution

이 문제를 해결할 수있는 여러 가지 방법이 있습니다. 그 중 하나는 호스트 이름을 localhost로 추가하는 것입니다 /etc/hosts(여러 다른 답변에 표시됨). 이것은 일반적으로 옳은 일이지만, 유일한 해결책은 아닙니다.

"정규화 된 도메인 이름"은 외부 DNS 서버 또는 이와 유사한 것으로 제공 될 수 있습니다 (네트워크에서 사용 가능한 경우). 이 경우의 sudo항목이 누락 되었음에도 불구하고 불만을 제기하지 않습니다 /etc/hosts.


참고 : sudosudoers 파일의 선택적 기능으로 인해 반드시 필요한 것은 아니지만 호스트 이름을 역 참조하려고합니다. hostname 검색을 시도하는 sudo 명령을 참조하십시오 .

지연 시간이 너무 길지 않은 한이 오류 메시지는 일반적으로 무해합니다.


다소 빠름 :sudo --host=localhost
nobar


5

이 같은 오류 메시지가 발생했습니다. AWS Developer Forums의 토론 스레드가 더 나은 솔루션이라고 생각합니다.

"VPC 관리 콘솔로 이동하여 VPC를 선택하고 작업을 클릭 한 다음 DNS 호스트 이름 편집을 선택하고 예를 선택하십시오."

https://forums.aws.amazon.com/thread.jspa?messageID=699718


5

일부 터미널 에뮬레이터는 에뮬레이터를 닫았다가 다시 시작할 때까지 정확한 호스트 이름으로 프롬프트를 업데이트하지 않습니다 (lxterminal, 대화 중입니다).

프롬프트가 이전 값을 표시했지만 호스트 이름호스트 파일 을 편집 하고 실행 하고 호스트 이름이 새로운 값임을 알 sudo service hostname restart때까지 실행 한 후이 오류로 30 분을 보냈습니다 sudo hostname.


1
문제는 터미널 에뮬레이터가 아니라 값을 캐시 한 쉘입니다.
Mark Stosberg

4

내 경우에는 내가이 변경 문제였다 hostnameman나는 당신이 사용할 수있는 몇 가지 매개 변수가 있는지 알고 싶었 기 때문에 hostname. 대신 내 변화 hostname에를 man하고 난 항상 당신처럼 같은 메시지를 받았습니다

sudo: unable to resolve host (none)

호스트 이름을 다시 'localhost'로 변경 한 후 모든 것이 다시 정상적으로 작동했습니다.

hostname localhost

3

모두 수정을 권고합니다 /etc/hosts. 그러나 경우에 따라이 작업이 불가능할 수도 있습니다 (예 : 도커 컨테이너 내부). 그래서 더 나은 방법을 찾아야했고 나는 이것을 생각해 냈습니다.

echo "alias sudo='sudo -h 127.0.0.1'" >> ~/.bash_aliases
source ~/.bashrc

별칭은 bash 스크립트에서 작동하지 않지만 변수를 사용할 수 있습니다. sudo='sudo -h 127.0.0.1'


2

도움이되지 않지만 죄송합니다. "호스트를 확인할 수 없습니다"라는 메시지가 표시되므로 실행 해보십시오.

hostname

그리고 출력이 머신의 호스트 이름인지 확인하십시오. 그렇지 않은 경우 문제는 sudo가 아닌 호스트 구성입니다.


나는 내 컴퓨터의 호스트 이름을 얻었습니다. / etc / hosts에도 항목이 있습니다. 여전히 오류가 발생합니다.
chandresh

호스트 파일을 변경 한 후 시스템을 재부팅 했습니까?
animaletdesequia 18시 52 분

아니요. IT 팀은 잠금 파일과 puppetlabs의 gpg 키에 문제가 있다고 말했지만. 이제 다시 시작하지 않고 해결되었습니다.
chandresh

2

OP는 다음과 같이 썼다.

모두 / etc / hostname에있었습니다. 아픈 서버 중 두 곳에서 다음과 같이 보입니다.

ubuntu@(none):~$ cat /etc/hostname
linux-web-n ip-10-128-##-##

이 문제가없는 서버에있는 동안 우리는 다음을 가졌습니다.

ubuntu@ip-10-128-##-###:~$ cat /etc/hostname
ip-10-128-##-###

linux-web-n부분을 제거하고 다시 부팅 하면 모든 것이 정상입니다.


2

호스트 또는 호스트 이름 파일에 잘못된 문자가 포함되어 있으면 오류가 발생했을 수 있습니다. 다음 기호 만 허용됩니다 : az, AZ, 0-9


2

나는이 같은 문제가 있었다! 온라인 관리자 제어판을 통해 호스트 파일의 시스템 이름을 변경하지 않은 VPS 이름을 변경했습니다.

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

그리고 그것은 내 오류를 해결했습니다! 이것이 도움이 되었기를 바랍니다!


1

나는 같은 문제가 있었다. / etc / hosts 파일에서 / etc / hosts 및 / etc / hostname 파일 ...을 편집하여 해결했습니다. 아래 표시된대로 상단 부분을 편집하면됩니다.

#vi /etc/hosts
    127.0.0.1   localhost
    127.0.1.1   localhost  myhostname




#vi /etc/hostname
    myhostname

127.0.1.1 localhost myhostname또는 127.0.1.1 myhostname?
Mostafa Ahangarha

2
/etc/hosts없이 편집 할 수 있습니다 sudo. sudo작동하지 않습니다sudo: unable to resolve host ...
Green

1

sudo를 할 수 없다면 su를 통해 루트로 로그인 할 수 있습니다. IE : su root (x-term). 프롬프트가 표시되면 루트 비밀번호를 입력 한 다음 nano를 사용하여 파일을 편집 할 수 있습니다. 'buntu의 루트 비밀번호는 sudo에 사용할 비밀번호와 동일합니다.


5
Ubuntu의 루트 비밀번호는의 비밀번호와 다릅니다 sudo. root기본적으로 비밀번호가 설정되어 있지 않은 자체 계정입니다.
TheWanderer

1

Vagrant를 사용하는 경우 게스트에 로그인하여 실행하십시오. apt-get --no-install-recommends install virtualbox-guest-utils


0

문제가 해당 /etc/hostname파일이고 /etc/hosts두 파일 모두 원하는 호스트 이름을 가지고 있으며 여전히 시스템에 오류가 표시됩니다

sudo: unable to resolve host

호스트 이름을 강요하십시오

sudo hostname -F /etc/hostname

여전히 같은 오류가 발생하지만 로그 아웃했다가 다시 로그인 해보십시오.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.