BLOGTIMES
2016/03/28

ssh で known_hosts 関連の警告が出ないようにする

  ssh 
このエントリーをはてなブックマークに追加

ssh には known_hosts というファイルがあって、これまでにアクセスしたことがあるホストの fingerprint が保存されるようになっています。

初めてアクセスするホストであったり、ホストのキーが変更されていると ssh はユーザーにプロンプトを出して確認をしようとするのですが、バッチなどで ssh を使う場合にはそこで永久にブロックしてしまったりするのでこれが何かと厄介。少し前まではホストのキーが変わるなんていうことはそれこそほとんどありませんでしたが、最近はクラウドや仮想化でホストも簡単に作り替えられるようになったので、そのたびに yes/no で答えたり、known_hosts から該当行を削除したりと、手動のオペレーションが面倒になってきたのでこれらをスキップするための方法をメモ。ちなみにセキュリティレベルは下がりますので、その点は注意が必要です。

使うのは StrictHostKeyCheckingUserKnownHostsFile という2つのオプション。
以下のような感じで使います。

ssh -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null somehost.example.com

StrictHostKeyChecking は known_hosts のフィンガープリントが変わっていても(警告は出ますが)そのまま上書きして処理を継続するためのオプション。UserKnownHostsFile は known_hosts ファイルの場所を指定するためのオプション。これに /dev/null を指定すると常にファイルが空になるので、そもそも known_hosts が作られなくなるというわけです。

コマンドラインでいちいち打つのが面倒という場合には ssh_config に以下を追加しておけば良いでしょう。

Host *.example.com StrictHostKeyChecking no UserKnownHostsFile /dev/null

    トラックバックについて
    Trackback URL:
    お気軽にどうぞ。トラックバック前にポリシーをお読みください。[policy]
    このエントリへのTrackbackにはこのURLが必要です→https://blog.cles.jp/item/8374
    Trackbacks
    このエントリにトラックバックはありません
    Comments
    愛のあるツッコミをお気軽にどうぞ。[policy]
    古いエントリについてはコメント制御しているため、即時に反映されないことがあります。
    コメントはありません
    Comments Form

    コメントは承認後の表示となります。
    OpenIDでログインすると、即時に公開されます。

    OpenID を使ってログインすることができます。

    Identity URL: Yahoo! JAPAN IDでログイン