mattintosh note

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

2024-06-05: 現在ホビー関連の記事を hobby.mattintosh-note.jp に移行しています。現在掲載されている画像と今後掲載される画像は一部の環境から閲覧できなくなります。

ローカルとかプライベートネットワークでもういい加減 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.

ご利用は計画的に…😇