SSH를 통해 호스트에 연결할 때 간단히 입력하고 연결할 수 있기를 원합니다 ssh hostname
.
그러나 현재 설정에서는 연결하려면 hostname.hosts.companyname.com
.
호스트 파일에 호스트 이름을 추가하지 않고 연결을 포기하기 전에 여러 호스트 이름을 반복하도록 SSH를 설정할 수 있습니까? 예를 들어. 을 입력하면
ssh hostname
SSH에서 다음을 수행할 수 있게 됩니다.
hostname
짧은 시간 초과 후에 실패하면 SSH를 통해 액세스해 보십시오.hostname.hosts.companyname.com
짧은 시간 초과 후에 실패하면 SSH를 통해 액세스해 보십시오.- SSH를 통해 연결을 시도합니다
hostname.companyname.com
. 실패하면 오류가 인쇄됩니다.
그러나 우리는 1000개가 넘는 호스트를 보유하고 있으며 모든 호스트에 별칭을 추가하고 싶지는 않습니다. 이것이 기본 동작이기를 바랍니다.
위는 간단한 예입니다. 나는 이 목록에 30개의 잠재적 도메인 범위를 추가할 수 있기를 원합니다. resolv.conf
search
이것이 옵션이 아닌 이유입니다(도메인이 6개로 제한되어 있기 때문입니다).
답변1
/etc/resolv.conf
DNS를 업데이트하려면 다음 두 단계를 따르세요.
domain
또는 줄이 있을 수 있습니다search
. 있는 경우 파일에서 로 바꾸고domain
다음search
단계를 계속합니다.hosts.companyname.com companyname.com
검색 목록에 추가합니다 .search
(또는 ) 지시문이 없으면domain
이 두 값을 사용하여 지시문을 만듭니다.
결과의 예
nameserver 192.168.1.254
nameserver 192.168.2.254
search hosts.companyname.com companyname.com
/etc/hosts
이렇게 하면 귀하의 기준에 따라 DNS를 통해 자격이 없는 이름을 확인할 수 있습니다.
답변2
최소한 두 가지 옵션이 있습니다:
구성 파일
~/.ssh/config
별칭을 사용하여 파일을 생성합니다 .
Host hostname
HostName hostname.hosts.companyname.com
올바른 호스트 이름이 정적이라고 가정합니다. 물론 이는 파일을 변경하는 것과 다소 유사합니다 /etc/hosts
.
쉘 기능
ssh
명령 이름이나 명시적으로 호출해야 하는 항목(예: )에 대해 쉘 함수를 정의 할 수 있습니다 ssh-hosts
.
ssh () {
hostname="$1"
test -z "$hostname" && return 128
for suffix in "" .hosts.companyname.com .companyname.com ; do
test_hostname="$hostname$suffix"
if [ -n "$(ssh-keyscan "$test_hostname" 2>/dev/null)"; then
ssh "$test_hostname"
return $?
fi
done
}
물론 config
이 방법을 사용하여 파일을 생성할 수도 있습니다. 모든 호스트 이름 목록이 없는 경우 쉘 기능을 사용하여 파일에 새 Host
블록을 추가 config
하고 파일을 실행하기 전에 확인할 수도 있습니다 ssh-keyscan
.