
Что если один хост определен следующим /etc/hosts
образом:
192.168.0.100 server
и один определяется ~/.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
ссылается на этот файл до того, как сделать что-либо еще, используя подробный переключатель, -v
, для ssh
.
Запись хоста в ~/.ssh/config
Здесь у меня есть запись в ~/.ssh/config
файле для сервера с именем "skinner". Я включаю уровень отладки 3, включая -v
переключатели 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
происходит обращение к системе, чтобы узнать IP-адрес для имени хоста «skinner».
ПРИМЕЧАНИЕ:getent
Для поиска имен хостов в вашей системе вы можете использовать :
$ getent hosts skinner
192.168.1.3 skinner.dom.net
решение3
Как правило, для программного обеспечения Unix в целом пользовательские настройки (в данном случае ~/.ssh/config
) переопределяют общесистемные настройки (в данном случае /etc/hosts
); таким образом, настройки в ~/.ssh/config
будут иметь более высокий приоритет.