> > It's vexing that it's so hard to find a solution to such a simple problem: > > prompt the user for a password if and only if one is needed. > > Indeed. Here's another crazy idea. > > - Look if ssh-agent is running (SSH_AGENT_PID non-empty?) > - If not, start ssh-agent and ssh-add. This asks for the passphrase, > if any. > - run sftp > - If the script started ssh-agent, run eval $(ssh-agent -k)
Yeah, I think that is actually a pretty good idea. Thanks. Another case is if the user sets SSH_KEY to use a specific key, and they already have an ssh-agent running, but it doesn't include that key. Then the key will have to be added and then removed again afterward, or maybe a different ssh-agent started. I'll have to think about that. All that is a bit of work, but it uses all supported methods, and no screen scraping, so I think it's worth doing. Andrew