私はUnixとその周辺環境、特にSSHと認証についてはあまり慣れていません。
私はIDを生成し(公開/秘密鍵ペアを生成し)、それをssh-agentに入れてから公開鍵をリモートホストにコピーし、パスワードを入力せずにリモートホストにSSHで接続できることを知っています。私が間違っている場合は修正しますが、ローカルシステムに登録されているすべてのIDを一覧表示するには実行できますssh-add -l
。
SSH経由で接続しようとすると(具体的にパスワードを繰り返し入力する必要がないようにSSH経由でbitbucketに接続しようとすると)、次の警告が表示されます。
Warning: Permanently added the RSA host key for IP address 'xxx.xxx.xxx.xxx' to the list of known hosts.
放棄して「RSAホストキーを永久に追加」と呼ぶ操作を実行した後、実行して以前ssh-add -l
に作成した公開/秘密鍵のペアが登録されず、代わりに新しいIDが生成されることがわかりました。混乱して内容を確認してみましたが、~/.ssh/
先ほど作成したファイル以外に他の公開/秘密鍵ファイルは見えませんでした。
実行してIDを削除しようとしましたが、ssh-add -D
役に立ちませんでした。を実行するとまだ表示されますssh-add -l
。
私の質問は次のとおりです
- どうしたの? Unixでローカルパスワードの入力を求められたら、新しいIDを作成しましたか?
- リストされたIDの公開鍵と秘密鍵はどこで見つけることができますか
ssh-add -l
?私の身元を削除できないのはなぜですかssh-add -D
? - Bitbucketに正常に接続しましたが、アカウントマネージャに公開キー(以前に作成したキーに加えて)が追加されなかったのはなぜですか
ssh-keygen
? - これがファイルに関連している可能性があることがわかりました
~/.ssh/known_hosts
が、そのファイルの目的が何であるか、SSHビジネス全体とどのような関係があるのかわかりません。
SSHの仕組み、Unixの公開/秘密鍵、IDの管理方法、Known_hostsファイルの仕組みの説明をインターネットで見つけましたが、何も見つかりません。外部の記事の説明や参照は非常に感謝します!
追加の背景情報:
以前は、新しい公開/秘密鍵ペアを作成してssh-agentに追加しました(そして、Bitbucketの指示に従って公開鍵をBitbucketにコピーしました)。その後、コンピュータの電源を切った後、翌日再び電源を入れました。これを実行すると、git fetch
ローカルユーザーのパスワードを入力するように求められ、上記の警告が表示されます。すると、私の質問と混乱がなくなりました。
ベストアンサー1
キーワードはホストキー。ホストに初めて接続すると、そのホストの公開鍵フィンガープリントが表示されます。サーバー自体には、ユーザーと同様にキーペアがあります。
MITMを受信しないように、自分が知っているサーバー指紋を使って指紋を確認できるというアイデアです。
ホストキーを受け入れると、Known_hosts ファイルに保存され、クライアントが後続のすべての接続を認証するために使用されます。
ホストキーが予期せず変更された場合、クライアントは何かが間違っている可能性があるため、確認する必要があることを知らせる面倒なエラーメッセージを見つけて表示します。