ホストが次のように定義されている場合/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
より高い優先順位を持ちます。