ssh : 호스트 이름을 확인할 수 없습니다 – High Sierra


3

최근에 Sierra에서 MacBook Pro를 High Sierra로 업그레이드 한 동료를 지원하고 있습니다. 그는 ssh를 통해 현장의 우리 상자 중 하나에 연결하려고합니다. 해당 상자에는 IPv6 주소가 있습니다.

~/.ssh/config파일이 비어와 SSH 키는 변경되지 않았습니다. /etc/ssh/ssh_config파일은 MBP에 설치 기본값입니다. 발굴은 제대로 작동하며 상자의 적절한 IPv6 주소를보고합니다. Ping6도 예상대로 작동합니다. 그는 IPv4 주소로 DNS를 통해 게시되는 사내 git 서버에 연결하고 문제없이 푸시 / 풀을 할 수 있습니다.

내가 그를 상자에 ssh하게하면 :

ssh user@hostname

연결이 실패합니다 :

ssh: Could not resolve hostname [hostname]: nodename nor servname provided, or not known

ssh에 -vvvv를 추가하면 다음과 같은 출력이 생성됩니다.

ssh -vvvv [hostname]
OpenSSH_7.6p1, LibreSSL 2.6.2
debug1: Reading configuration data /etc/ssh/ssh_config
debug1: /etc/ssh/ssh_config line 48: Applying options for *
debug2: ssh_connect_direct: needpriv 0
debug1: Connecting to [hostname] port 22.
ssh: Could not resolve hostname [hostname]: nodename nor servname provided, or not known

IPv6 주소를 사용하여 어플라이언스에 연결하면 연결에 성공하고 로그인 할 수 있습니다.

DNS 서버가 올바르게 구성되고 예상대로 주소를 제공합니다. Sierra와 MBP를 사용 중이며 연결하는 데 문제가 없습니다. 또한, 우리 그룹은 모두 다양한 빈티지 및 OS 풍미의 맥북 (다른 High Sierra 사용자 제외)을 사용하며, 현재까지이 문제를 겪고있는 유일한 사람입니다.

편집 : 우리는 여기에 제시된 솔루션을 시도했습니다 . 그러나 애플의 시스템 무결성 보호는 방해가되었다. 지금은 끄지 않을 것입니다. 마지막 수단으로 남겨두고 싶습니다.


해결할 수없는 호스트 이름에 대해 더 많이 알지 못하면 실제로 문제가 무엇인지 말하기가 어렵습니다. / etc / hosts에 있습니까, DNS (글로벌 또는 로컬)에 있거나, .local (Bonjour) 이름입니까, IPv4 또는 IPv6 주소 또는 둘 다로 해석되어야하는 경우 ...
Gordon Davisson

호스트 이름을 어플라이언스 1 (예 : 어플라이언스 1.example.com)이라고하면 IPv6 주소 (AAAA 레코드)로만 해석되어야합니다. 이 특정 네트워크 세그먼트에는 A 레코드 (IPv4)가 없습니다. MBP의 / etc / hosts에 없습니다 (localhost 항목 만 포함해야 함). 호스트 항목은 BIND 스타일의 dns 파일에 있으며이 파일은 AWS 및 네트워크에서 지리적으로 분리 된 3 개의 dns 서버로 푸시되어 nsd3를 통해 제공됩니다. 여러 호스트를 포함하는 더 크고 라우팅 가능한 네트워크의 일부이므로 .local 이름이 아닙니다.
jrogers63

또한 아래의 답변에 따라이 문제는 Apple의 ssh 구현에 국한된 것으로 보입니다 .brew를 통해 설치된 openssh는 영향을받지 않습니다. 미래의 어느 시점에서 (시간 허용), 나는 애플의 ssh 구현으로 네트워크 이상을 찾을 수 있는지 확인하기 위해 tcpdump를 할 계획입니다.
jrogers63

답변:


4

이 경우에 도움이되는 해결 방법은 다음과 같습니다.

# install openssh from brew
brew install openssh

# /usr/local/sbin shouldn't be writable on High Sierra (by default), 
# so brew will fail to link the ssh binary

brew unlink openssh
ln -s /usr/local/Cellar/openssh/<version of openssh>/bin/ssh /usr/local/bin/ssh

사용 가능한 ssh 버전을 연결했습니다. 동료가 이제 예상대로 연결할 수 있습니다. Mac에는 두 가지 버전의 ssh가 있으므로 brew를 통해 설치된 openssh 버전이 먼저 PATH에 있는지 확인하는 것이 중요합니다.

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