~/.ssh/config 호스트 이름과 /etc/hosts가 충돌할 때 무엇이 ​​우선적으로 적용됩니까?

~/.ssh/config 호스트 이름과 /etc/hosts가 충돌할 때 무엇이 ​​우선적으로 적용됩니까?

호스트가 다음과 같이 정의된 경우 /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"라는 서버 항목이 있습니다. -v3이 포함된 스위치를 통해 디버그 레벨 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더 높은 우선순위를 갖습니다.

관련 정보