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エージェント配信を無効にできます。

答え2

解決策を見つけてください。

(間違って) ssh-agentがパスワードを「キャッシュ」したと思う前に、

a) エージェントを起動します。

b)リモートホストを入力してください

c) パスワードが不思議な「キャッシュ」に入ります。

d) リモートホストに再び入ることができ、パスワードがキャッシュされているので、パスワードを要求しません!完全に間違っています。

SSHを使用してパスワードなしで入るには2つの方法があります。

  1. kerberosまたはADを使用したシングルサインオン(kerberosを使用)

  2. 公開鍵

ssh-agent は秘密鍵のみを「転送」できます。例:

SSH-agentを起動します

eval `ssh-agent`
Agent pid 26541

キーを追加しました(プライマリキーを使用しましたが、パスワードの有無にかかわらず、ssh-keygenコマンドを使用して生成された他のキーを指定できます)。

ssh-add

仕事を最も明確にするために

local = my local machine
server1 = first remote server
server2 = second remote server

server1にリモートでログインしましたが、ssh-agentが「配信」されたため、server1に公開鍵(ローカル)がなくてもパスワードを入力しなくてもserver2のserver1からログインできます。 server2には.ssh/authorized_keysにキー(公開)があります。

ssh -A server1 #ask password
ssh server2 #don't ask password, from server1

ssh-agentが有効になっていない場合

ssh -A server1 #ask password
ssh server2 #ask password.

gifでよりよく説明されています。ユーザー「pino」は、パスワードを入力せずにリモートホスト「fedora」からリモートホスト「debian」に移動します。 (パスワードなしで入力するには、slack64のpubkeyをホストdebianファイルの$ HOME / .ssh / authorized_keysにコピーする必要があります。はい)しかし、ssh-agentを終了して再試行すると入力が失敗するあります)。

ここに画像の説明を入力してください。

関連情報