ssh-agent:どのように機能しますか?

ssh-agent:どのように機能しますか?

パスワードなしでssh-agentログインを試みたいです(gssapiとpubkeyの方法を既に知っていますが、これについて学びたい)。クライアントとサーバーのssh_config(クライアント)とsshd_config(サーバー)でAgentForwardを有効にしました。

クライアントでssh-agentを起動します。

eval `ssh-agent`

私のrsaキーを追加します

ssh-add

ssh-add -l 動作確認

ssh-add -l
4096 SHA256:******** mysuser@mylocalhost (RSA)

その後、ログインしてパスワードを求めます。

ssh remotehost

リモートホストのssh-add -lが機能していることを確認してください。

ssh-add -l
4096 SHA256:******** mysuser@mylocalhost (RSA)

別のシェルを開き、SSHを介してリモートホストに接続し、...パスワードを再度要求します。今ログアウトしてログインしたら…パスワードをもう一度尋ねてください。何が問題なの?

また、新しいrsaキーの作成、パスワードの追加、ssh-addを使用して追加しようとしましたが、まだパスワードを要求しました。

ベストアンサー1

ターミナルウィンドウで手動で起動すると、ssh-agentそのウィンドウでプロキシ機能を使用でき、プロセスはそのウィンドウでのみ開始されます。 GUIセッションのすべてのターミナルウィンドウでエージェントを使用できるようにするには、GUIセッション設定の一部としてエージェントを起動する必要があります。

ディストリビューションには、これを可能にするいくつかのツールがある場合とない場合があります。オプションのPAMモジュールがこれを行うことができます。または、Debianおよび関連ディストリビューションは、次の方法pam_ssh.soでX11セッションのSSHエージェントを有効にすることができます(詳細については参考資料を参照)。他のディストリビューションには異なるソリューションがあります。/etc/X11/Xsession.optionsman 5 Xsession.options

技術的には、SSHエージェントが起動したら、SSHクライアントがエージェントと通信できるようにするUnixソケットを作成し、環境変数をSSH_AUTH_SOCK使用してその場所を識別します。プロキシ転送を使用すると、sshdリモートホストは転送されたプロキシ接続に対して同様のソケットと環境変数を生成します。

あるローカル端末ウィンドウでエージェントを起動し、この環境変数をローカルシェルを実行している別の端末にコピーすると、両方の端末で手動で起動されたエージェントを使用できます。ただし、通常、SSH_AUTH_SOCK環境変数がすでに設定されており、そのセッションで開始されたすべての端末に自動的に継承されるように、GUIセッション設定の一部としてエージェントを起動するソリューションを見つけることをお勧めします。

リモートホストの管理者は、必要であると判断した場合はSSHエージェント配信を無効にできます。

おすすめ記事