'localhost'가 OSX에서 내 VirtualBox VM에 SSH로 연결하기 위해 '127.0.0.1'의 별칭으로 작동하지 않습니다. 이유와 해결 방법은 무엇입니까?

'localhost'가 OSX에서 내 VirtualBox VM에 SSH로 연결하기 위해 '127.0.0.1'의 별칭으로 작동하지 않습니다. 이유와 해결 방법은 무엇입니까?

질문은 문제를 설명합니다. 몇 달 동안 나는 이런 면에서 어떤 문제도 겪은 적이 없습니다. 그러다 어제 아침에 VM에 들어갈 수 없었습니다! 문제를 해결하는 데 오랜 시간이 걸렸지만 해결책은 다음과 같습니다.

Brendans-Mac-mini:~ Brendan$ ssh -p 3022 user@localhost
ssh: Could not resolve hostname localhost: nodename nor servname provided, or not known
Brendans-Mac-mini:~ Brendan$ ssh -p 3022 [email protected]
[email protected]'s password: 
Last login: Tue Jul  1 22:37:59 2014 from 10.0.2.2

그렇다면 왜 이런 일이 발생했을까요? 그리고 더 중요하게는 어떻게 해결해야 할까요?

시도했는데 dig localhost, 이는 localhost와 127.0.0.1 사이에 여전히 일종의 연결이 있음을 알려주는 것 같습니다.

Brendans-Mac-mini:~ Brendan$ dig localhost

; <<>> DiG 9.8.3-P1 <<>> localhost
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 28989
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 0

;; QUESTION SECTION:
;localhost.         IN  A

;; ANSWER SECTION:
localhost.      655360  IN  A   127.0.0.1

;; Query time: 7 msec
;; SERVER: 10.0.1.1#53(10.0.1.1)
;; WHEN: Wed Jul  2 09:44:44 2014
;; MSG SIZE  rcvd: 43

답변1

localhost는 일반적으로 DNS가 아닌 /etc/hosts 파일에 정의됩니다(DNS에는 이에 대한 긴급 백업 항목이 있지만). 다음은 OS X(Mavericks 기준)의 /etc/hosts의 일반적인 내용입니다.

##
# Host Database
#
# localhost is used to configure the loopback interface
# when the system is booting.  Do not change this entry.
##
127.0.0.1       localhost
255.255.255.255 broadcasthost
::1             localhost 
fe80::1%lo0     localhost

이 파일을 편집/재생성해야 하는 경우 Unix 스타일 줄 끝(줄 바꿈)이 있는 일반 텍스트 형식(형식이 전혀 없음)이어야 합니다. vi또는 와 같은 명령줄 편집기를 사용할 수 있습니다 nano. GUI 편집기를 원한다면 추천하는 편입니다.텍스트랭글러아니면 그 큰 형님BB편집이와 같은 파일을 편집하는 데에는 편집하는 파일에 가짜 "유용한" 항목을 추가하지 않는 것이 좋으며 관리자 권한을 사용하여 시스템 파일(예: /etc/hosts)을 편집할 수도 있기 때문입니다.

(또한 실제로 눈에 띄거나 중요한 것은 아니지만 주소와 이름 사이에 있는 탭 문자입니다.)

이와 같은 조회를 테스트하려면 다음과 같은 것 대신 dscacheutil( )를 사용하십시오 . 사용하는 이유 는 (and 및 )는 시스템 조회 정책을 우회하여 DNS를 직접 확인하는 반면 전체 시스템 조회 정책을 사용하기 때문입니다. 결과적으로 /etc/hosts의 항목이 표시되지 않거나, mDNS(Bonjour) 조회가 수행되지 않거나, 디렉터리 서비스에서 컴퓨터 항목이 검색되거나, 이전 조회에서 캐시된 항목이 표시되지 않습니다.dscacheutil -q host -a name localhostdigdscacheutildighostnsloogupdscacheutildig

호스트 파일이 올바르게 설정되면 dscacheutil의 출력은 다음과 같아야 합니다.

$ dscacheutil -q host -a name localhost
name: localhost
ipv6_address: ::1
ipv6_address: fe80:1::1

name: localhost
ip_address: 127.0.0.1

관련 정보