UserKnownHostsFileとStrictHostKeyChecking【ssh】

メモ。

  •  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に書き込まない」みたいな意味になるみたいです。

 

おわり

CI/CD
スポンサーリンク
この記事を書いた人
penpen

1991生まれ。WEBエンジニア。

技術スタック:TypeScript/Next.js/Express/Docker/AWS

フォローする
フォローする

コメント

タイトルとURLをコピーしました