2026年9月28日
2026年9月28日
SSHのknown_hostsの問題を解決する方法
ステップ1: known_hostsの問題概要
known_hostsファイルは、SSH接続時にホストキーを保存し、そのホストの認証を確認するためのものです。ただし、このファイルが誤って更新されると、エラーが発生して接続に失敗することがあります。この記事では、そのような問題を解決する方法を詳しく説明します。
ステップ2: known_hostsの問題発生場面
known_hostsのエラーは以下の状況で起こることが多いです:
- 新しいSSHサーバーへの接続
- SSHサーバーのIPアドレスが変更された場合
- known_hostsファイルに不正なホストキーが追加された場合
- 構成ファイルの所有者やパーミッションが間違っている場合
ステップ3: known_hostsの問題を解決する手順
ステップ1: 既存のknown_hostsファイルをバックアップ
まず、現在のknown_hostsファイルをバックアップします。これは重要なステップで、将来的に必要な場合に元に戻すことができます。
# 既存のknown_hostsファイルをバックアップ
cp ~/.ssh/known_hosts ~/.ssh/known_hosts.bak
ステップ2: known_hostsファイルを削除
次に、問題のあるknown_hostsファイルを削除します。これにより、古いまたは不正なホストキーが削除され、接続再試行時に新しいキーが自動的に保存されます。
# known_hostsファイルを削除
rm ~/.ssh/known_hosts
ステップ3: 新たなSSH接続を試みる
known_hostsファイルが削除された後、再度SSH接続を試みてください。この操作により、新しいホストキーが正しく保存され、エラーが解決します。
# 新しいSSH接続を行う
ssh username@server_address
ステップ4: known_hostsファイルの所有者とパーミッションを確認
最後に、known_hostsファイルの所有者とパーミッションが適切であることを確認します。これはセキュリティ上の理由から重要です。
# 所有者とパーミッションを確認
ls -l ~/.ssh/known_hosts
通常は以下の権限でなければならないはずです:
- ファイル所有者は
user - パーミッション:
-rw-------または600
# 所有者とパーミッションが適切でない場合は修正します
chown user:user ~/.ssh/known_hosts
chmod 600 ~/.ssh/known_hosts
注意事項
- known_hostsファイルのバックアップは重要なため、定期的に実施することをおすすめします。
- 削除したknown_hostsファイルが自動再生成される場合があるため、手動で管理することが推奨されます。
- 環境によって異なる設定が必要な場合もあるため、自身の環境に合った適切な操作を行うことが重要です。
まとめ
1. バックアップ: known_hostsファイルをバックアップし、将来的に必要になったときに元に戻すことができる
2. 削除: 不正または古いknown_hostsファイルを削除し、新しい接続で自動的に更新されるようにする
3. 再接続: 新たなSSH接続を行い、問題の解決を確認する
4. 所有者とパーミッションの確認: known_hostsファイルの所有者とパーミッションが適切であることを確認し、必要に応じて修正を行う
関連記事: