2017-02-23 2 views
1

Ich versuche, ein OpenSSH-Problem zu debuggen, in dem CPU hoch geht. Aber vorher möchte ich bestätigen, ob die SSH-Agent-Weiterleitungsfunktion für diese Verbindung verwendet wurde. Es folgt der Core-Dump des Child-SSH-Servers, der zwei Kanäle zugewiesen hat. Kanäle [1] scheint mit ssh-Agent zu sprechen.OpenSSH - Ist es ssh-Agent-Weiterleitung?

Ich brauche Hilfe in folgenden:

1) Als ich ssh-agent spricht mit SSH-Client kennen, aber hier scheint es zu SSH-Server zu sprechen. Können wir sagen, dass wir ssh-agent forwarding in der Rolle haben?

2) Was kann ich tun, um dieses Szenario zu reproduzieren?

3) Alles andere, was Sie mir vielleicht von den angegebenen Daten erzählen möchten.

(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" 

Antwort

1

1) Als ich ssh-agent spricht mit SSH-Client kennen, ist hier jedoch scheint es SSH-Server zu sprechen. Können wir sagen, dass wir eine ssh-agent-Weiterleitung in der Rolle haben?

Es ist der andere Weg. Der Client spricht mit dem Agenten. Wenn Sie den Socket an den Server weiterleiten, können andere Clients auf diesem Server mit dem Agenten auf Ihrem Computer sprechen.

Das ist alles. Der Server hat dort die einzige Aufgabe, den Authentifizierungs-Socket weiterzuleiten.

2) Was kann ich tun, um dieses Szenario zu reproduzieren?

starten ssh-agent und die Verwendung ssh -A server zur Verbindung mit Agenten-Forwarding einzuleiten.

3) Alles andere, worüber Sie mir vielleicht von den angegebenen Daten erzählen könnten.

(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 */ 

Ja, das ist Agent-Forwarding.

+0

Danke. Darf ich Sie auffordern, Ihre Antwort auf 1) zu erläutern, wie andere Clients meinen ssh-agent mit dieser Funktion nutzen können. Wenn möglich, erläutern Sie bitte, wie diese Socket-Weiterleitung funktioniert. –

+1

Die anderen Clients verwenden den ssh-agent nach dem Socket in der Umgebungsvariable 'SSH_AUTH_SOCK'. Die Weiterleitung funktioniert, wie Sie naiv erwarten. An beiden Enden gibt es Sockets und eine Seite schreibt in die erste, während die andere die Daten von der zweiten liest. – Jakuje

Verwandte Themen