私のGoogle検索結果があまり役に立たなかったので、ここに連絡してください。
私のUbuntuサーバーには、両方のファイルに重複した~/.ssh/authorzied_keys
エントリがたくさんあります。~/.ssh/known_hosts
重複した行を削除して一度だけリストできるコマンド/ユーティリティがあるかどうか疑問に思います。
答え1
コマンドラインユーティリティはuniq
andと呼ばれますsort
。一意の項目のみを取得するには、ファイルをパイプでリンクするだけです。
sort ~/.ssh/authorized_keys | uniq > ~/.ssh/authorized_keys.uniq
次に、古いファイルを新しいファイルに置き換えます。
mv ~/.ssh/authorized_keys{.uniq,}
これは~/.ssh/known_hosts
それ自体で処理され、ssh
重複項目を含めないでください(手動で変更する場合は可能であり、上記と同じ方法を使用できます)。
答え2
ssh-keygen -R hostname
指定されたホスト名のエントリを削除します。
答え3
私の問題は、異なるホストキーを持つ1つのホストの複数のエントリです。これはJenkinsビルドスレーブからのものです。アプリケーションサーバーが再構築されました。ホスト名/ IPが新しいサーバーに移動されましたが、ホストキーが異なります。私が思いついたライナーは次のとおりです。
cat known_hosts | cut -f1 -d' ' | sort | uniq -c | \
sed '/^ *1 /d' | awk '{print $2}' | while read line; do \
ssh-keygen -R $line; ssh-keyscan $line; \
done
Known_hostsの最初のフィールドを取得して並べ替えて、uniq -c
各ホスト名のインスタンス数を計算し、sed
1の数を持つすべての行を削除してからssh-keygen -R
ホストを削除し、最後にssh-keyscan
現在のホストキーをKnown_hostsに追加します。
警告:ホストキーを変更したくない場合は、このコマンドを実行する前にホストキーが変更された理由を理解する必要があります。ホストキーは、予想されるホスト(中間者ではない)に接続することを保証します。
答え4
各コピーの1つを保持しようとしているので、最も簡単な解決策は、テキストエディタを使用して、正しい情報が含まれなくなった各ファイルの行を削除することです。