mattintosh note

どこかのエンジニアモドキの備忘録

ローカルとかプライベートネットワークでもういい加減 ssh-keygen -R したくない

最近は仮想環境を使ったり、おうちに Raspberry Pi をたくさん設置して SSH で作業することも多くなりましたよね。

SSH で接続先が増えた時に困るのがフィンガープリントの問題です。例えば VirtualBox でゲスト OS に NAT 経由で localhost:22222 で接続出来るようにしたりしますが、ゲスト OS を入れ直すと ssh-keygen -R をしなきゃいけないんですね。Raspberry Piraspberrypi.local で接続しますが、まぁ microSD をよく初期化するのでその度に ssh-keygen -R を叩かされるわけです。特に面倒なのが AWS で EIP 固定で検証用にインスタンをスガンガン作り直したりとかですね…。

グローバルなところは置いといてローカルでホストが変わったとわかりきってるところに ssh-keygen を叩きたくないので私は ~/.ssh/config にこう書いてますというだけの話です。

~/.ssh/config

Host localhost *.local 192.168.*
    StrictHostKeyChecking no
    UserKnownHostsFile    /dev/null

上記は一例ですがこのように書いておくと、

  • localhost
  • *.local(例えば raspberrypi.local など)
  • 192.168.*(例えば 192.168.1.11 など)

に対してホストのチェック(初めて接続する時に聞かれる yes/no のアレ)を行わなくなります。また、ホスト公開鍵を ~/.ssh/known_hosts ではなく /dev/null に保存します。つまり保存しません。何言ってんだ。

この状態で接続してみましょう。Warning: Permanently added 'XXXXXXXX' (ECDSA) to the list of known hosts. は毎回出ますが出るだけです。

Terminal

$ ssh -p22222 localhost
Warning: Permanently added '[localhost]:22222' (ECDSA) to the list of known hosts.

ご利用は計画的に…😇