私は正式な定義を読んだ。
ssh-agent
はい秘密鍵の保存手順公開鍵認証(RSA、DSA、ECDSA)に使用されます。アイデアは、ssh-agentがXセッションまたはログインセッションと他のすべてのウィンドウまたはプログラムの起動時に開始されることです。ssh-agentプログラムのクライアントとして起動。環境変数を使用すると、ssh(1)を使用して他のシステムにログインしたときにプロキシを見つけて自動的に認証に使用できます。
「秘密鍵を保存するプログラム」- IMHO、SSHキーは、ssh-keygen
ユーザーがコマンドを使用して生成して簡単に保存します~/.ssh
。これらのキーを保存するためにデーモンが必要なのはなぜですか?正確にどのように受け入れますか? - ただに保存されていませんか.ssh
?
「ssh-agentプログラムのクライアントとして起動」- 私は理解できません。これはどこに必要ですか?私は通常、次のようにsshを使用します。
ssh -i ~/.ssh/private_key_name username@hostname
上記の定義では、「顧客」とは正確に何を意味しますか?どんな顧客?ssh
他のコンピュータに接続するために端末でコマンドを実行しませんか?他のクライアントがあり、コマンドのようにその秘密鍵ファイルへの完全修飾パスを使用できないのはなぜですかssh
?
ベストアンサー1
SSH エージェントは認証データ署名を処理します。サーバーに認証するときは、自分であることを証明するために秘密鍵でいくつかのデータに署名する必要があります。
セキュリティ対策として、ほとんどの人は秘密鍵を保護するためにパスワードを賢く使用しているため、認証を試みるたびにそのパスワードを入力する必要があります。これはおそらく望ましくない可能性があるため、ssh-agentがユーザーのためにキーをキャッシュし、エージェントがパスワードを復号化しようとするときにパスワードを一度だけ入力するだけです(ssh-agentはpamや多くのディストリビューションと統合できるため、通常必要です)しません)。やるべきことはこのようにして行われます)。
SSHエージェントはこれらのキーをクライアントプログラムに渡すのではなく、クライアントがデータを送信し、署名されたデータで応答できるソケットを提供するだけです。これの付随的な利点は、完全に信頼できないプログラムでも秘密鍵を使用できることです。
SSHプロキシのもう1つの利点は、SSH経由で配信する機能です。したがって、ホストAにSSHを介してプロキシを渡す間、キーはホストAに存在せずに(暗号化された形式ではなく)Aから別のホストBにSSHに接続できます。