bugzilla-daemon at bugzilla.mindrot.org
2017-Jul-06 16:58 UTC
[Bug 2739] New: ssh-add no longer works with xargs
https://bugzilla.mindrot.org/show_bug.cgi?id=2739 Bug ID: 2739 Summary: ssh-add no longer works with xargs Product: Portable OpenSSH Version: 7.4p1 Hardware: amd64 OS: Mac OS X Status: NEW Severity: minor Priority: P5 Component: ssh-add Assignee: unassigned-bugs at mindrot.org Reporter: micahculpepper at gmail.com I have a small script in my bash profile to ensure my ssh keys have been added to ssh-add. A recent update broke this. Here is the command I was using: find ~/.ssh | egrep 'id_rsa$' | xargs ssh-add -K Here is the output of everything up until ssh-add: bash-3.2$ find ~/.ssh | egrep 'id_rsa$' | xargs /Users/user/.ssh/foo_id_rsa /Users/user/.ssh/id_rsa /Users/user/.ssh/bar_id_rsa And that is the expected output. When I run the whole line, here is what I get today, with error messages: bash-3.2$ find ~/.ssh | egrep 'id_rsa$' | xargs ssh-add -K ssh_askpass: exec(/usr/X11R6/bin/ssh-askpass): No such file or directory Identity added: /Users/user/.ssh/id_rsa (/Users/user/.ssh/id_rsa) ssh_askpass: exec(/usr/X11R6/bin/ssh-askpass): No such file or directory The middle key isn't passphrase-protected, and it is added successfully. The other keys aren't added, and apparently ssh-add can't find "/usr/X11R6/bin/ssh-askpass". I checked, and sure enough, that file does not exist. What's weird is that this works if I don't use xargs. I can do exactly the same thing in a for loop, and it works: bash-3.2$ for i in $(find ~/.ssh | egrep 'id_rsa$'); do ssh-add -K $i; done Enter passphrase for /Users/user/.ssh/foo_id_rsa: Identity added: /Users/user/.ssh/foo_id_rsa (/Users/user/.ssh/foo_id_rsa) Identity added: /Users/user/.ssh/id_rsa (/Users/user/.ssh/id_rsa) Enter passphrase for /Users/user/.ssh/bar_id_rsa: Identity added: /Users/user/.ssh/bar_id_rsa (/Users/user/.ssh/bar_id_rsa) The xargs approach was working before. And in fact, I can even do it all on one line and it works: ssh-add -K /Users/user/.ssh/foo_id_rsa /Users/user/.ssh/id_rsa /Users/user/.ssh/bar_id_rsa Enter passphrase for /Users/user/.ssh/foo_id_rsa: Identity added: /Users/user/.ssh/foo_id_rsa (/Users/user/.ssh/foo_id_rsa) Identity added: /Users/user/.ssh/id_rsa (/Users/user/.ssh/id_rsa) Enter passphrase for /Users/user/.ssh/bar_id_rsa: Identity added: /Users/user/.ssh/bar_id_rsa (/Users/user/.ssh/bar_id_rsa) I also tried the simple case, in an attempt to rule out find or egrep as the culprit: bash-3.2$ echo '/Users/user/.ssh/bar_id_rsa' | xargs ssh-add -K ssh_askpass: exec(/usr/X11R6/bin/ssh-askpass): No such file or directory So: - One filename at a time works. - Multiple filename arguments works. - Filenames coming from xargs does not work. bash-3.2$ uname -a Darwin hostname 16.6.0 Darwin Kernel Version 16.6.0: Fri Apr 14 16:21:16 PDT 2017; root:xnu-3789.60.24~6/RELEASE_X86_64 x86_64 bash-3.2$ ssh -V OpenSSH_7.4p1, LibreSSL 2.5.0 -- You are receiving this mail because: You are watching the assignee of the bug.
bugzilla-daemon at bugzilla.mindrot.org
2017-Jul-10 01:34 UTC
[Bug 2739] ssh-add no longer works with xargs
https://bugzilla.mindrot.org/show_bug.cgi?id=2739 Darren Tucker <dtucker at zip.com.au> changed: What |Removed |Added ---------------------------------------------------------------------------- CC| |dtucker at zip.com.au --- Comment #1 from Darren Tucker <dtucker at zip.com.au> --- (In reply to Micah Culpepper from comment #0)> I have a small script in my bash profile to ensure my ssh keys have > been added to ssh-add. A recent update broke this.You updated from what to what? Were the old and/or new built from source from openssh.com?> Here is the command I was using: > find ~/.ssh | egrep 'id_rsa$' | xargs ssh-add -KThe ssh-add we ship does not have a '-K' option. Where did you get this package?> What's weird is that this works if I don't use xargs.What's likely happening is xargs does not pass a controlling tty. Normally this would result in a X-based ssh-askpass popup asking for a password, but you don't have ssh-askpass. $ tty /dev/ttyp0 $ echo | xargs tty not a tty> The xargs approach was working before.worked with a graphic or text prompt for passphrase?> And in fact, I can even do it > all on one line and it works:works with a graphic or text prompt for passphrase? [...]> So: > - One filename at a time works. > - Multiple filename arguments works. > - Filenames coming from xargs does not work.so use a subshell instead of xargs so you retain the controlling tty: $ ssh-add `find ~/.ssh | egrep 'id_rsa$'` (or if you don't like old-school backticks): $ ssh-add $(find ~/.ssh | egrep 'id_rsa$') -- You are receiving this mail because: You are watching the assignee of the bug. You are watching someone on the CC list of the bug.
bugzilla-daemon at bugzilla.mindrot.org
2017-Jul-27 04:01 UTC
[Bug 2739] ssh-add no longer works with xargs
https://bugzilla.mindrot.org/show_bug.cgi?id=2739 Darren Tucker <dtucker at zip.com.au> changed: What |Removed |Added ---------------------------------------------------------------------------- Resolution|--- |INVALID Status|NEW |RESOLVED --- Comment #2 from Darren Tucker <dtucker at zip.com.au> --->From the available information it looks like where ever you got yourbinaries from didn't include ssh-askpass and in the absence of additional information there's nothing else we can do. -- You are receiving this mail because: You are watching someone on the CC list of the bug. You are watching the assignee of the bug.
bugzilla-daemon at mindrot.org
2021-Apr-23 05:09 UTC
[Bug 2739] ssh-add no longer works with xargs
https://bugzilla.mindrot.org/show_bug.cgi?id=2739 Damien Miller <djm at mindrot.org> changed: What |Removed |Added ---------------------------------------------------------------------------- Status|RESOLVED |CLOSED --- Comment #3 from Damien Miller <djm at mindrot.org> --- closing resolved bugs as of 8.6p1 release -- You are receiving this mail because: You are watching the assignee of the bug. You are watching someone on the CC list of the bug.