SSH 구성에서 호스트와 호스트 이름의 차이점은 무엇입니까?


23

매뉴얼 페이지는 다음과 같이 말합니다.

주최자

호스트 다음 선언 (다음 호스트 키워드까지)은 키워드 다음에 주어진 패턴 중 하나와 일치하는 호스트에만 적용됩니다. 둘 이상의 패턴이 제공되는 경우 공백으로 구분해야합니다. 패턴으로 하나의`* '를 사용하여 모든 호스트에 전역 기본값을 제공 할 수 있습니다. 호스트는 명령 행에 제공된 호스트 이름 인수입니다 (즉, 이름은 일치하기 전에 정규화 된 호스트 이름으로 변환되지 않습니다).

접두사 앞에 느낌표 (`! ')를 붙여 패턴 입력을 무효화 할 수 있습니다. 부정 된 항목이 일치하면 라인의 다른 패턴과 일치하는지 여부에 관계없이 호스트 항목이 무시됩니다. 따라서 부정 일치는 와일드 카드 일치에 예외를 제공하는 데 유용합니다.>

패턴에 대한 자세한 정보는 패턴을 참조하십시오.

호스트 이름

HostName 로그인 할 실제 호스트 이름을 지정합니다. 호스트의 별명 또는 약어를 지정하는 데 사용할 수 있습니다. 호스트 이름에 문자 시퀀스`% h '가 포함되어 있으면 명령 행에 지정된 호스트 이름으로 바뀝니다 (이것은 규정되지 않은 이름을 조작하는 데 유용합니다). 기본값은 명령 행에 지정된 이름입니다. 숫자 IP 주소도 허용됩니다 (명령 줄과 HostName 사양 모두).

예를 들어 GitHub에 대한 SSH 구성을 만들려면 각각 Host와 HostName은 무엇입니까?


3
본질적으로 : SSH를 호출 할 때 Host사용자가 CLI에 입력 으로 제공하는 문자열입니다 . 서버에 연결을 시도 할 때 HostNameSSH 클라이언트가 네트워크를 통해 출력 할 문자열입니다 .
sampablokuper

답변:


15

github.com의 경우 ~/.ssh/config다음과 같이 보일 수 있습니다

Host github.com
    IdentityFile ~/.ssh/key_name_for_github

호스트 이름의 경우 : man에서 말한 것처럼 호스트의 약어를 지정할 수 있습니다. 예를 들어, ~/.ssh/config이런 모습 이라면

Host host1
    HostName host1.example.com
Host host2
    HostName anotherdomain.com

그런 다음 입력 할 때

  • ssh host1실제로 host1.example.com에 로그인합니다
  • ssh host2anotherdomain.com에 로그인

두 번째 ~/.ssh/config예 에서 '호스트'대신 '호스트 이름'을 의미한다고 생각 합니까?
Dave

6

간단한 사용법으로 :

Host 실제 호스트 이름이며 없음 HostName

또는

Host호스트의 별명이며 HostName실제 호스트 이름입니다.

간단한 예 :

$ cat ~/.ssh/config
Host dev
    Hostname <hostname>
    User <username>
    IdentityFile <path_to_private_key>

$ ssh dev
# Equivalent to "ssh -i <path_to_private_key> <username>@<hostname>"

참고 : 매뉴얼 페이지는 기술적으로 정확하며 조금 이상하게 표시됩니다. 명확성을 위해 몇 가지 단어를 더 추가하겠습니다.HostName Specifies the real host name to log into. This can be used *TOGETHER WITH 'HOST'* to specify nicknames or abbreviations for hosts.


1

최근에 호스트와 호스트 이름으로 무언가를하고 싶었지만 정확한 구문을 잊어 버렸습니다 ... 그러나 인터넷 검색은 혼란스럽고 매뉴얼 페이지는별로 도움이되지 않았습니다. 그래서, 같은 필요를 가진 다른 사람들이 있다고 가정하면, 여기에 약간의 혼란이 있습니다.

호스트는 명령 행 인수를 지정하며 a) 실제 호스트 이름 / IP, b) 속기, c) 별명으로 생각할 수 있습니다. HostName은 연결중인 시스템의 실제 호스트 이름 / IP입니다. HostName 필드에서 % h를 명령 행에서 지정한 호스트 이름 문자열로 사용할 수 있습니다. (이것은 필자의 예제에서 사용하고 싶은 부분이었습니다.)

호스트 이름이 my-proj-host -...로 시작하고 모두 .my.proj.domain.com 도메인에 있고 특정 ssh 키를 사용하여 로그인 해야하는 호스트 세트가 있다고 가정 해 봅시다. my-proj-id-rsa 및 특정 사용자 ID my-proj-user. 내 인생을 더 쉽게 만들기 위해 ~ / .ssh / config 파일에 다음을 추가합니다.

호스트 내 프로젝트 호스트 *

호스트 이름 % h.my.proj.domain.com

사용자 내 프로젝트 사용자

IdentityFile ~ / .ssh / my-proj-id-rsa

이제 입력 할 수 있습니다

ssh my-proj-host-1234

구성이 없으면

ssh -i ~ / .ssh / my-proj-id-rsa my-proj-user@my-proj-host-1234.my.proj.domain.com

약간의 타이핑 (및 오타)을 저장합니다.

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