ssh-agent subprocess parentage

Daniel Kahn Gillmor dkg at
Tue May 10 07:13:33 EST 2011

On 05/09/2011 04:54 PM, Phil Pennock wrote:
> No, that's not how Unix works.  A child process can't indirectly cause
> its parent to run something without pre-arranged RPCs to communicate
> application-layer instructions to do so, which I doubt your shell has.

I'm pretty sure this is actually how it works.  ssh-agent forks, and is
two processes concurrently.  Each process (the parent and the child)
gets to decide what to do next.  In ssh-agent, the parent process
exec()'s the subcommand, while the child process lives on as an agent.

Search for "fork" in ssh-agent.c to see what i'm talking about.

> There is a common idiom to use:
>   eval `ssh-agent -s`
> to set up ssh which results in the process layout you describe.  This is
> probably happening somewhere that you just haven't tracked down yet.

This does *not* result in the process layout i describe -- this results
in a daemonized process via a forking and dying parent (that is, only
the child process remains, and its parent becomes PID 1).  This
arrangement is even harder to supervise properly.


-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 1030 bytes
Desc: OpenPGP digital signature
URL: <>

More information about the openssh-unix-dev mailing list