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.