メモ。
- StrictHostKeyChecking:
known_hosts
に書き込むかどうか?についての設定
- UserKnownHostsFile:
- デフォルトの
known_hosts
の代わりに使用するファイルの設定
- デフォルトの
前知識
まず前提を説明すると、SSHでは接続する前に「こいつは本当に信頼できる奴なのか?」リストを参考にして、接続するか決める仕様になっています。
そのリストはknown_hosts
という名前のファイルです。
例えばAというホストにSSH接続する場合、初回接続時に「Aは信用できるやつなのか?」をユーザーに尋ねます。
ユーザーが「信用できるよ!」と答えると、known_hosts
に「こいつは信用できるだぜ」な情報を書き込みます。(実際に書き込むのは、接続先ホストの公開鍵です)
そして2回目以降にAに接続するときは、まずknown_hosts
を参照してAの情報がないか探します。もしあれば「Aは信用できるやつ」なので、接続を許可します。
StrictHostKeyChecking
StrictHostKeyChecking
は、known_hosts
に書き込むかどうか?についてオプションです
オプションはそれぞれ以下のようになっています。
- yes:書き込まない
- no:書き込む
- ask:書き込むかどうか?をユーザーに尋ねる (デフォルトはこれ)
yes を指定すると、接続しようとしているホストの情報を事前にknown_hosts
に書き込んでおかないと接続が拒否されます。
no を指定すると、問答無用で接続した上で、known_hosts
に書き込みます。
ask はデフォルト値です。
SSH接続なrsyncコマンドでCI/CDとして走らせたりする場合は、入力を求められてしまうと処理がストップしてしまうので no を指定します。
参考:rsyncコマンドでXサーバーにローカルのファイルを同期する
UserKnownHostsFile
例えば
UserKnownHostsFile=/dev/null
と指定すると、結果的にknown_hosts
に書き込まれることなく無に帰します。
参考:/dev/nullとは|「分かりそう」で「分からない」でも「分かった」気になれるIT用語辞典
以下のように2つを組み合わせると
StrictHostKeyChecking=no UserKnownHostsFile=/dev/null
「問答無用で接続するし、接続先のホストの情報はknown_hosts
に書き込まない」みたいな意味になるみたいです。
おわり
コメント