호스트가 다음과 같이 정의된 경우 /etc/hosts
:
192.168.0.100 server
1은 다음과 같이 정의됩니다 ~/.ssh/config
.
Host server
HostName 192.168.0.101
그런 다음 서버에 ssh를 연결합니다 ssh server
.
그러한 갈등을 해결하는 방법은 무엇입니까? 한 쪽이 다른 쪽보다 우선순위가 더 높은 것 같아요.
답변1
이렇게 하면 ssh server
서버 부분은 아마도 실제 호스트 이름이거나 일부 SSH 내부 "별명"일 것입니다. ssh는 먼저 .ssh/config에서 일부 별명을 찾고 거기에서 구성을 찾으면 이를 사용합니다. 구성을 찾지 못하면 실제 호스트 이름을 가정하고 /etc/host 및 dns를 통해 확인을 시도합니다.
답변2
이 파일 ~/.ssh/config
은 /etc/hosts
. 대신 ssh
존재하는 경우 사용할 수 있는 구성 파일입니다 .
ssh
다른 작업을 수행하기 전에 verbose 스위치를 사용하여 -v
파일이 참조되는 것을 확인할 수 있습니다 ssh
.
~/.ssh/config의 호스트 항목
여기 내 파일에 ~/.ssh/config
"skinner"라는 서버 항목이 있습니다. -v
3이 포함된 스위치를 통해 디버그 레벨 3을 활성화합니다 .
$ ssh -vvv skinner
OpenSSH_6.2p2, OpenSSL 1.0.1e-fips 11 Feb 2013
debug1: Reading configuration data /home/saml/.ssh/config
debug1: /home/saml/.ssh/config line 8: Applying options for *
debug1: /home/saml/.ssh/config line 35: Applying options for skinner
debug1: /home/saml/.ssh/config line 55: Applying options for *
debug3: cipher ok: arcfour [arcfour,blowfish-cbc]
debug3: cipher ok: blowfish-cbc [arcfour,blowfish-cbc]
debug3: ciphers ok: [arcfour,blowfish-cbc]
debug1: Reading configuration data /etc/ssh/ssh_config
debug1: /etc/ssh/ssh_config line 50: Applying options for *
debug1: auto-mux: Trying existing master
...
ssh
위에서 는 시스템의 이름 확인 기능을 참조하지 않고도 이 정의가 사용되고 있음 을 알 수 있습니다 .
~/.ssh/config에 호스트 항목이 없습니다.
~/.ssh/config
파일에 해당 항목 이 없으면 ssh
지정된 호스트 이름에 연결하는 방법을 알아보기 위해 시스템의 DNS 확인을 쿼리합니다.
$ ssh -vvv skinner
OpenSSH_6.2p2, OpenSSL 1.0.1e-fips 11 Feb 2013
debug1: Reading configuration data /home/saml/.ssh/config
debug1: /home/saml/.ssh/config line 8: Applying options for *
debug1: /home/saml/.ssh/config line 55: Applying options for *
debug3: cipher ok: arcfour [arcfour,blowfish-cbc]
debug3: cipher ok: blowfish-cbc [arcfour,blowfish-cbc]
debug3: ciphers ok: [arcfour,blowfish-cbc]
debug1: Reading configuration data /etc/ssh/ssh_config
debug1: /etc/ssh/ssh_config line 50: Applying options for *
debug1: auto-mux: Trying existing master
debug1: Control socket "/home/saml/.ssh/master-saml@skinner:22" does not exist
debug2: ssh_connect: needpriv 0
debug1: Connecting to skinner [192.168.1.3] port 22.
debug1: Connection established.
ssh
여기서 호스트 이름 "skinner"에 대한 IP 주소를 찾기 위해 시스템이 참조되고 있음 을 볼 수 있습니다 .
노트:getent
다음을 사용하여 시스템에서 호스트 이름을 찾을 수 있습니다 .
$ getent hosts skinner
192.168.1.3 skinner.dom.net
답변3
일반적으로 Unix 소프트웨어의 경우 사용자별 설정(이 경우 ~/.ssh/config
)이 시스템 전체 설정(이 경우 /etc/hosts
)보다 우선합니다. 따라서 의 설정이 ~/.ssh/config
더 높은 우선순위를 갖습니다.