작업을 완료하려면 직장에서 여러 서버에 로그인해야 합니다. 액세스하려는 서버의 FQDN을 입력하는 데 지쳤습니다. 우리의 개인 네트워크에서 SSH를 통해 로그인/아웃하고 있습니다. 나는 그것이 우리 자신의 개인 네트워크에 있다고 99% 확신합니다. b/c 모든 서버의 IP 주소는 10.xyz입니다. 도메인 이름 대신 호스트 이름만 사용하여 서버에 SSH로 연결하는 방법이 있습니까?
우리는 여러 국가에 서버를 보유하고 있습니다. 우리의 서버 이름 지정 체계는 매우 깁니다. 다음과 같이 이름이 지정됩니다.
hostname.country.domainname.com
손목터널이 생기네요.
ssh [email protected]
...우리 서버 중 하나에 액세스할 때마다. 미국에 있고 미국에 있는 다른 호스트에 액세스하려고 하면 입력만 하면 ssh me@hostname2
잘 연결됩니다. 하지만 미국에 있고 영국에 있는 서버에 연결하려고 하면 .ssh [email protected]
hostname3
내가 한 해결 방법은 ~/.ssh/config 파일에서 특정 서버에 대한 별칭을 설정하는 것이었습니다. 그러나 이 파일에 1000개 이상의 서버를 추가하는 것은 가능하지 않다고 생각합니다. 나는 20개가 넘는 서버를 추가했고 동료들은 내가 미쳤다고 생각합니다. 비록 그들이 ssh 주위에 FQDN을 입력하는 것에 미쳤다고 생각하더라도 말입니다.
매번 domainname.com을 입력할 필요가 없도록 설정하는 쉬운 방법이 있습니까?
답변1
%h
구성에 와일드카드를 사용할 수 있습니다.
예를 들어
Host *.eng
Hostname %h.domainname.com
이제 이 작업을 수행하면 ssh foo.eng
에 연결을 시도합니다 foo.eng.domainname.com
.
이 구성에 사용자 이름 강제 적용과 같은 다른 옵션을 추가할 수도 있습니다.
Host *.eng
Hostname %h.domainname.com
User me
이제 이 작업을 수행하면 사용자로 연결을 시도합니다 ssh foo.eng
.foo.eng.domainname.com
me
% ssh foo.eng
ssh: Could not resolve hostname foo.eng.domainname.com: Name or service not known
(글쎄, 유효한 호스트 이름이 아니기 전에 오류가 발생한 것 같습니다!)
따라서 이제 국가당 하나의 규칙만 필요합니다.
답변2
CanonicalDomains
SSH 구성에서 이 옵션을 사용할 수 있습니다 .
domainname.com
SSH 구성 파일에 다음을 추가하면 SSH는 이름에 최대 1개의 점이 포함된 호스트에 연결을 시도합니다 .
CanonicalizeHostname yes
CanonicalDomains domainname.com
이 구성을 사용하면 먼저 시도한 후 ssh foo.eng
호스트를 찾을 수 없으면 foo.eng.domainname.com
대체됩니다 . foo.eng
다시 한번 말하지만, 이것이 ssh github.com
먼저 시도될 것이므로 github.com.domainname.com
GitHub에 연결하려는 경우 DNS 서버는 존재하지 않는 호스트에 대한 레코드를 반환해서는 안 됩니다.
CanonicalizeMaxDots
ssh가 호스트 이름이 완전한 것으로 간주하고 추가하지 않기 전에 호스트 이름에 표시할 수 있는 점 수를 제어하는 데 사용할 수 있습니다 domainname.com
. 기본값은 1이며 현재 시나리오를 고려하면 충분하지만 비슷한 상황이 발생하면 hostname.city.country
늘려야 합니다 .
답변3
추가하면
search domainname.com
/etc/resolv.conf
, 및 사용 ( hostname.country
및 ssh
해당 문제에 대한 다른 웹 프로그램)은 자동으로 domainname.com
1 을 추가합니다 .
search
서로 다른 두 국가의 두 서버가 동일한 호스트 이름 을 공유하는 경우 예상치 못한 동작이 발생할 수 있으므로 경로에 다른 국가의 도메인을 추가하는 것은 좋은 생각이 아니라고 생각합니다.
나는 이 방법이 어떤 프로그램( VNC, ...) 을 사용하더라도 문제를 해결할 수 있기 ssh
때문에 구성을 변경하는 것보다 낫다고 생각합니다 .hostname.country
telnet
바라보다resolv.conf(5)
자체적으로 구문 분석 domainname.com
할 수 없는 경우 1이 더 정확하게 추가됩니다.hostname.country
2 이 경우 hostname
경로에서 도메인이 먼저 나열된 국가의 서버로 확인됩니다 search
.