VPSを再構築したのでknown_host
ファイルのエントリを削除することに.
そのときのメモです.
詰まったところ
特定のエントリの削除はssh-keygen
コマンドと-R
オプションを使います.
$ ssh-keygen -R xxx.xxx.xxx.xxx
ですが, 以下のように見つからないと言われます.
Host xxx.xxx.xxx.xxx not found in /home/tsolsikke/.ssh/known_hosts
そこで, manコマンドで使い方を確認してみますと以下のようになっています.
-R hostname | [hostname]:port
Removes all keys belonging to the specified hostname (with optional port number) from a known_hosts
file. This option is useful to delete hashed hosts (see the -H option above).
ポート番号も22でない場合は指定しなければいけないようです.
$ ssh-keygen -R xxx.xxx.xxx.xxx:yyyy
Host xxx.xxx.xxx.xxx not found in /home/tsolsikke/.ssh/known_hosts
それでも見つからない…? ホスト名を変更するなど色々試しましたが駄目.
ですが, 答えは先程のmanページの中にありまして, [hostname]:port
の[]
部分は任意という意味でなく文字通り入力しないといけないのでした.
答え合わせ
$ ssh-keygen -R "[xxx.xxx.xxx.xxx]:yyyy"
ポート番号を指定するときは[]
をホスト名に付けます.
*nix系のコマンドのマニュアルにおいて, []
はオプションで入力するものを表すことが多いのですが, この場合はそうでないということです.
今日も変なところで詰まってしまった…
TIPS
ちなみにですが, 今回使ったssh-keygen -R
のようなマイナス記号のついたコマンドをそのまま検索するとマイナス検索として処理されてしまいます.
そこで, マイナスの付いているキーワードをダブルクォートで囲んであげると文字通りで検索出来ます.
ssh-keygen "-R"
当たり前の人にとっては当たり前のことなのですが, コマンドを調べる際などには必須知識ですね.