git/list[1] front-page[2] threads[3] people[4] search[5] about
 

Re: Git ksshaskpass to play nice with https and kwallet

From
Jeff King <peff@peff.net>
Date
Oct 4, 2011, 10:50 UTC
Message-ID
<20111004105008.GA11789@sigill.intra.peff.net>
In-Reply-To
<4E8ADDCF.6090406@drmicha.warpmail.net>
On Tue, Oct 04, 2011 at 12:19:59PM +0200, Michael J Gruber wrote:
Show 12 quoted lines
> But Git calls the askpass helper with a command line like
> /usr/bin/ksshaskpass Username for 'bitbucket.org':
> and once again with
> /usr/bin/ksshaskpass Password for 'bitbucket.org':
> So far so good.
> 
> But when asked to store the credentials in the KDE wallet, ksshaskpass
> tries (too) hard to guess a good key from that line. And for both
> invocations, it comes up with the same key (the URL), so that when the
> password info is needed, the username info from the wallet is returned.
> Authentication fails.
> Far from good.

Neat. I didn't know ksshaskpass would do that. I wondered for a minute if all of the credential helper stuff could have gone through the askpass interface. But I don't think so.

One problem is that the askpass interface only lets us ask for one thing at a time. So even with your clever hack, it will end up storing two separate keys: Username@host and Password@host. But it has no idea they're connected. So if you store "user1 / pass1", then try to push to "user2@host", we would silently use the password for user1.

On top of that, there isn't much contextual information. I guess they assumed the guessing would be used for "ssh". But it means that a stored ssh password could potentially be used for git, and vice versa. I guess you could get around that by making the host field longer and more descriptive (i.e., a full url).

-Peff
Previous: Michael J GruberNext: Michael J Gruber
Message 2 of 30 in “Git ksshaskpass to play nice with https and kwallet”
  1. Michael J GruberOct 4, 2011
  2. Jeff KingOct 4, 2011
  3. Michael J GruberOct 4, 2011
  4. Jeff KingOct 4, 2011
  5. Michael J GruberOct 4, 2011
  6. Jeff KingOct 4, 2011
  7. Michael J GruberOct 4, 2011
  8. Jeff KingOct 5, 2011
  9. Jeff KingOct 5, 2011
  10. Michael J GruberOct 6, 2011
  11. remote-curl: Obey passed URLMichael J Gruber, Oct 6, 2011
  12. Jeff KingOct 6, 2011
  13. Jeff KingOct 6, 2011
  14. Michael J GruberOct 12, 2011
  15. http_init: accept separate URL parameterJeff King, Oct 12, 2011
  16. Jeff KingOct 12, 2011
  17. Junio C HamanoOct 12, 2011
  18. Jeff KingOct 12, 2011
  19. Michael J GruberOct 13, 2011
  20. 0/6 http-auth-earlyMichael J Gruber, Oct 14, 2011
  21. Jeff KingOct 14, 2011
  22. Michael J GruberOct 14, 2011
  23. Junio C HamanoOct 14, 2011
  24. 1/6 url: decode buffers that are not NUL-terminatedMichael J Gruber, Oct 14, 2011
  25. 2/6 improve httpd auth testsMichael J Gruber, Oct 14, 2011
  26. 3/6 remote-curl: don't retry auth failures with dumb protocolMichael J Gruber, Oct 14, 2011
  27. 4/6 http: retry authentication failures for all http requestsMichael J Gruber, Oct 14, 2011
  28. 5/6 http: use hostname in credential descriptionMichael J Gruber, Oct 14, 2011
  29. 6/6 http_init: accept separate URL parameterMichael J Gruber, Oct 14, 2011
  30. Tay Ray ChuanOct 13, 2011

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.