2017-02-23 8 views
1

CPUが高くなるOpenSSHの問題をデバッグしようとしています。しかし、その前に、この接続にSSHエージェント転送機能が使用されているかどうか確認したいと思います。次に、2つのチャネルを割り当てた子SSHサーバのコアダンプを示します。 channels [1]はssh-agentと通信しているようです。私は、次のヘルプ必要OpenSSH - ssh-agentフォワーディングですか?

:私はSSHクライアントにssh-agentの交渉を知っているよう

1)が、しかしここでは、SSHサーバーに話をすること に思えます。私たちはssh-agentフォワーディング を持っていると言えますか?

2)このシナリオを再現するにはどうすればよいですか?

3) データから親切に教えてください。

(gdb) p *channels[0] 
     type = 0x4, 
     self = 0x0, 
     remote_id = 0x0, 
     istate = 0x0, 
     ostate = 0x3, 
     flags = 0x0, 
     rfd = 0xd, 
     wfd = 0xffffffff, 
     efd = 0xffffffff, 
     sock = 0xffffffff, 
     ctl_chan = 0xffffffff, 
     isatty = 0x1, 
     client_tty = 0x0, 
     path = 0x0, 
     listening_port = 0x0, 
     listening_addr = 0x0, 
     host_port = 0x0, 
     remote_name = 0xb0f2e4a0 "server-session", 
     ctype = 0x187df64 "session", 
     open_confirm = 0, 
     open_confirm_ctx = 0x0, 
     detach_user = 0x1855650 <session_close_by_channel>, 
     detach_close = 0x1, 
    ============================= 
(gdb) p *channels[1] 
     type = 0x6, 
     self = 0x1, 
     remote_id = 0xffffffff, 
     istate = 0x0, 
     ostate = 0x0, 
     flags = 0x0, 
     rfd = 0x9, 
     wfd = 0x9, 
     efd = 0xffffffff, 
     sock = 0x9, 
     ctl_chan = 0xffffffff, 
     path = 0xb0f2e7a0 "/tmp/ssh-00015945aa/agent.15945", 
     listening_port = 0x0, 
     listening_addr = 0x0, 
     host_port = 0x0, 
     remote_name = 0xb0f2e720 "auth socket", 
     ctype = 0x187d92c "auth socket" 

答えて

1

1)私は、SSHクライアントにssh-agentの交渉を知っているように、しかしここでは、SSHサーバーに話をしているようです。 ssh-agentフォワーディングが役割を果たすと言うことができますか?

他の方法です。クライアントはエージェントに通話します。ソケットをサーバーに転送すると、そのサーバー上の他のクライアントがコンピューター上のエージェントと通信できます。

それだけです。サーバーには、認証ソケットを転送する唯一の役割があります。

2)このシナリオを再現するにはどうすればよいですか?

ssh-agentを開始し、ssh -A serverを使用して、エージェント転送との接続を開始します。

3)与えられたデータから親切に私に教えてください。

(gdb) p *channels[0] 
    type = 0x4, /* SSH_CHANNEL_OPEN -- shell or command */ 

(gdb) p *channels[1] 
    type = 0x6, /* SSH_CHANNEL_AUTH_SOCKET -- ssh-agent forwarding */ 

はい、それは、エージェント転送です。

+0

ありがとうございました。 1)他のクライアントがこの機能を使って自分のssh-agentをどのように使用できるかについてのあなたの返答を詳しく述べてください。可能であれば、このソケット転送の仕組みについても説明してください。 –

+1

他のクライアントは、環境変数 'SSH_AUTH_SOCK'にあるソケットによってssh-agentを使用しています。フォワーディングはあなたが素朴に期待するように機能します。両側にソケットがあり、一方の側が最初のソケットに書き込み、もう一方が第2のソケットからデータを読み取ることができます。 – Jakuje

関連する問題