私は正式な定義を読んだ。
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に接続できます。
答え2
この方法の利点ssh-agent
は、パスワードを一度入力するだけです。 RSA 秘密鍵がパスワードで暗号化されていない場合、ssh-agent は不要です。このssh
コマンドはクライアントの例です。
答え3
ssh
独自のキーとパスワードを持つさまざまな異なるシステムに頻繁にアクセスする場合は、実行を使用すると、セッションのssh-agent
開始時に各キーにパスワード1を1回入力し、各システムに複数回入力できます。認証が機能します。期待どおりにパスワードを再入力する必要はありません。
別の利点は、ページによると、man
プロキシが要求チャネルを介して秘密鍵を送信しないので、別のボックス間を移動すると秘密鍵が保護されることです。
1life
エージェントにキーが残っている期間を設定できます。
答え4
「ssh-agentプログラムのクライアントとして起動する」とは、(ローカル)ログインセッションの初期化中にssh-agentが起動し、すべてのプログラムがエージェントに接続するために必要な環境変数を取得することを意味します$SSH_AGENT_PID
。$SSH_AUTH_SOCK
sshで秘密鍵処理を実行するもう1つの利点は、ssh-agentをgpg-agentに置き換えることができることです。したがって、SSHにOpenPGPキー(認証機能を含む)を使用できます。これはスマートカードのOpenPGPキーに適したソリューションです。