2017-02-23 70 views
1

我想調試CPU變高的OpenSSH問題。但在此之前,我想確認是否已使用SSH代理轉發功能進行此連接。以下是分配了兩個通道的子SSH服務器的core-dump。 頻道[1]似乎在與ssh-agent對話。OpenSSH - 它是ssh代理轉發?

我需要在以下幫助:

1)正如我知道的ssh-agent會談SSH客戶端,但是在這裏似乎 談話與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-agent會談SSH客戶端,但是在這裏似乎是在討論到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。轉發工作,你天真地期望。兩端都有套接字,一端寫入第一端,另一端可讀取第二端的數據。 – Jakuje

相關問題