2017-02-23 3 views
1

J'essaye de déboguer un problème d'OpenSSH dans lequel le processeur passe haut. Mais avant cela, je veux confirmer si la fonction de transfert SSH-Agent a été utilisée pour cette connexion. Voici le core-dump du serveur SSH enfant qui a alloué deux canaux. channels [1] semble parler à ssh-agent.OpenSSH - S'agit-il d'un transfert ssh-agent?

je besoin d'aide en ce qui suit:

1) Comme je sais parle ssh-agent au client SSH, mais ici, il semble parler au serveur SSH. Pouvons-nous dire que nous avons l'agent ssh-forwarding dans le rôle?

2) Que puis-je faire pour reproduire ce scénario?

3) Tout ce que vous voudrez bien me dire à propos des données données.

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

Répondre

1

1) Comme je sais parle ssh-agent au client SSH, mais ici, il semble parler au serveur SSH. Pouvons-nous dire que nous avons une redirection de ssh-agent dans le rôle?

C'est l'inverse. Le client parle à l'agent. Si vous transférez le socket au serveur, les autres clients de ce serveur peuvent parler à l'agent sur votre ordinateur.

C'est tout. Le serveur a le seul rôle de transférer le socket d'authentification.

2) Que puis-je faire pour reproduire ce scénario?

Démarrer ssh-agent et l'utilisation ssh -A server pour lancer la connexion avec le transfert de l'agent.

3) Tout ce dont vous voudrez peut-être me parler dans les données fournies.

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

Oui, c'est le transfert d'agent.

+0

Merci. Puis-je vous demander de préciser votre réponse à 1) sur la façon dont les autres clients peuvent utiliser mon agent ssh en utilisant cette fonctionnalité. Si possible, veuillez expliquer comment fonctionne cette redirection de socket. –

+1

Les autres clients utilisent l'agent ssh par le socket situé dans la variable d'environnement SSH_AUTH_SOCK. L'expédition fonctionne comme vous l'attendez naïvement. Il y a des douilles aux deux extrémités et un côté écrit sur le premier, tandis que l'autre peut lire les données de la seconde. – Jakuje