SSH를 사용하다 보면 가끔 "호스트 이름을 확인할 수 없습니다(couldn't resolve a hostname)"라는 오류 메시지를 만나게 됩니다. 이 오류가 발생한다면 먼저 네트워크에 제대로 연결되어 있는지 확인해야 합니다. 무선 네트워크를 사용하는 경우에는 요청을 완료할 수 있을 만큼 충분한 신호 강도를 확보하고 있는지도 함께 점검하는 것이 좋습니다. 많은 개발자들에 따르면 연결 문제는 이러한 오류의 가장 흔한 원인이며, 오타보다도 더 자주 발생한다고 합니다.
연결 상태가 확실하다면 다음으로 오타가 있는지 확인해야 합니다. IP 주소나 리소스 위치 정보를 잘못 입력했을 수 있습니다. SSH 소프트웨어는 항상 올바른 대상에 연결되도록 하기 위해 입력 형식에 다소 까다로운 면이 있습니다. 또한 hosts 파일이 SSH가 접속하려는 대상을 잘못된 방향으로 안내하고 있을 가능성도 있습니다.
방법 1: 잘못 작성된 호스트 이름 명령 수정
SSH를 's sh'나 'ss h'처럼 잘못 입력한 경우가 아니라면, 호스트 이름 명령 형식 자체가 잘못되었을 수 있습니다. SSH 명령은 반드시 ssh user@NAME 형식으로 작성해야 하며, 다른 형식은 인식하지 못합니다. 명령에 맞는 권한으로 터미널을 열어야 하는데, 일반적으로 SSH는 일반 사용자 권한으로도 실행할 수 있으므로 슈퍼유저 권한은 필요하지 않습니다.
Ctrl + Alt + T 키를 동시에 눌러 터미널을 열 수 있습니다. Xfce4 사용자 중 일부는 Windows(Super) 키와 T 키를 눌러도 됩니다. Dash, 응용 프로그램, KDE 또는 Whisker 메뉴에서 검색창에 '터미널(Terminal)'을 입력하거나 시스템 도구에서 선택하여 프롬프트를 시작할 수도 있습니다. 그래픽 사용자 인터페이스가 없는 Ubuntu Server나 Red Hat Enterprise Linux, Scientific Linux 버전을 사용하는 경우에는 Ctrl + Alt + F1~F6 키를 눌러 가상 콘솔에 접근한 뒤 로그인해야 진행할 수 있습니다.
프롬프트가 뜨면 SSH 명령을 입력하고 앞서 언급한 형식과 일치하는지 확인합니다. 예를 들어 네트워크상에 myPlace라는 호스트 이름이 연결되어 있다면 ssh root@myPlace를 시도해 볼 수 있습니다. IP 주소로 직접 연결하는 경우에는 # 기호를 실제 숫자로 바꾼 ssh root@##.#.#.## 형태의 명령을 사용하는 것이 좋습니다.
만약 root@server처럼 작성했다면 다음과 같은 오류가 출력됩니다.
ssh: Could not resolve hostname server: Name or service not known
일부 사용자는 항상 'ssh user@server' 형식으로 명령을 작성해야 한다는 점을 스스로 상기하는 습관을 들이기도 합니다.
방법 2: hosts 파일 수정
hosts 파일이 손상되어도 호스트 이름 문제가 발생할 수 있으며, SSH는 이런 유형의 오류에 대해서도 다른 오류와 동일한 경고를 표시할 때가 있습니다. hosts 파일을 열려면 루트(root) 권한이 필요합니다. 앞서 설명한 터미널을 사용 중이라면 sudo nano 명령을 입력해 파일을 편집 모드로 열 수 있으며, sudo는 비밀번호를 요구합니다.
데스크톱 환경에서 작업 중이라면 응용 프로그램 실행 줄을 열어야 합니다. 사용 중인 데스크톱 환경에 따라 Windows(Super) 키 + R, Alt + F2 또는 Dash 클릭으로 실행할 수 있습니다. 실행 줄이 열리면 GTK+ 기반인지 KDE Qt 기반인지에 따라 적절한 편집기를 입력하세요. gedit나 kate 대신 gvim, leafpad, mousepad를 사용할 수도 있습니다.
어느 쪽이든 hosts 파일이 열렸다면 읽기/쓰기 권한이 있는지 확인한 후 파일 상단을 살펴봅니다. 정상적으로 동작하려면 다음 두 줄이 필요합니다.
127.0.0.1 localhost
127.0.1.1 YourHostName
YourHostName에는 실제 컴퓨터의 호스트 이름이 들어가야 합니다. IPv6 네트워크를 사용하는 경우에는 다음 항목들도 필요할 수 있습니다.
::1 ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
IPv4만 사용하는 네트워크라면 대부분의 경우 처음 두 줄만 올바르게 설정하면 됩니다. 하지만 최신 인터넷 연결은 빠르게 IPv6 표준으로 이전하고 있어 두 줄만 설정하는 방식은 점차 사라지고 있습니다. Linux 배포판은 이러한 설정을 자동으로 구성해 주지만, 때때로 잘못된 패키지 설치나 사용자 실수로 hosts 파일이 손상되어 연결이 잘못된 위치로 향할 수 있습니다.
제목 표시줄에 <hosts>라고 표시되는 그래픽 텍스트 편집기를 사용 중이라면 실제로 저장되지 않은 것이며, gksu나 kdesu를 올바르게 사용하지 않은 것입니다. 또한 ff02::2 ip6-allrouters 이후에 다른 줄들이 있을 수 있는데, 이는 해당 코드들과 관련이 없다면 건드릴 필요가 없습니다. 이것들은 다른 설정의 일부이며, hosts 파일을 통해 특정 사이트 접근을 차단하던 시스템이라면 이런 항목이 상당히 많을 수 있습니다. 다만 중복된 줄은 주석 처리해야 하는데, 줄 시작 부분에 # 기호를 추가하면 됩니다. 앞서 언급한 각 줄은 한 번만 나타나야 하며, 동일한 이름에 여러 설정이 존재해서는 안 됩니다. 그렇게 되면 SSH를 포함한 모든 네트워크 프로그램이 마지막 설정을 사용하게 되는데, 그 값이 잘못된 것일 수 있습니다.
편집을 마쳤다면 파일을 저장하고 즉시 닫습니다. 불필요한 변경을 피하기 위해 여기서 바로 종료하는 것이 중요합니다. 완료 후 첫 번째 방법에서 설명한 대로 올바른 형식인지 확인하면서 SSH 명령을 다시 시도해 보세요. 그래도 문제가 계속된다면 컴퓨터를 재시작해야 합니다. 그 외의 경우에는 더 이상 SSH 관련 문제가 발생하지 않을 것입니다.
저자 소개

Kevin Arrows (케빈 애로우즈)
케빈 애로우즈는 10년 이상의 업계 경력을 지닌 베테랑 기술 전문가입니다. Microsoft Certified Technology Specialist(MCTS) 자격증을 보유하고 있으며, 최신 기술 동향을 꾸준히 학습하는 데 큰 열정을 가지고 있습니다. 소프트웨어 개발, 사이버 보안, 클라우드 컴퓨팅 등 다양한 기술 분야에서 폭넓게 집필해 왔으며, 복잡한 기술 개념을 명확하고 간결하게 설명하는 능력으로 동료들의 인정과 존경을 받고 있습니다.