SSH를 호출하기 전에 호스트 이름을 fqdn으로 확장하시겠습니까?

SSH를 호출하기 전에 호스트 이름을 fqdn으로 확장하시겠습니까?

.ssh/config 파일을 사용하여 하위 도메인의 특정 부분을 기반으로 사용자 이름을 적절하게 설정합니다. 예:

Host *widgetshop.com*
   User foobar
   ControlMaster auto
   ControlPath ~/.ssh/socket-%r@%h:%p

Host *
   ControlMaster auto
   ControlPath ~/.ssh/socket-%r@%h:%p

다음과 같이 쓰면 작동합니다.

ssh foo.widgetshop.com

하지만 다음과 같이 쓰면 작동하지 않습니다.

ssh foo

검색 경로 확인 시 동일한 fqdn이 됩니다.

SSH를 호출하기 전에 단축 이름을 확장하는 방법이나 대체 접근 방식이 있는 사람이 있나요?

답변1

아마도 다음 명령을 사용할 수 있습니다 host.

ssh $(host -t A  foo | cut -f1 -d" ")

이를 쉘 스크립트에 넣고("foo"를 "$1"로 대체) ssh를 실행합니다.

답변2

OpenSSH 6.5부터는 CanonicalizeHostnamessh_config의 옵션을 사용하여 이 작업을 수행할 수 있습니다. 다음은 원하는 작업을 수행하는 예입니다.

CanonicalizeHostname yes
CanonicalDomains widgetshop.com

Host *.widgetshop.com
     User foobar

답변3

ssh_config 맨페이지는 이에 대한 답변입니다:

호스트는 명령줄에 제공된 호스트 이름 인수입니다(즉, 이름은 일치하기 전에 정규화된 호스트 이름으로 변환되지 않습니다).

즉, 그런 식으로 작동하지 않기 때문에 작동하지 않습니다.

답변4

내 "대체 접근 방식"을 참조하세요)

mbp:~ alexus$ grep f9 /etc/hosts
XX.XXX.XX.XXX   f9
mbp:~ alexus$ ssh f9 hostname
f9.XXX.org
mbp:~ alexus$ 

관련 정보