[Bug 81] New: ssh cannot use ssh-askspass & passphrases as documented
bugzilla-daemon at mindrot.org
bugzilla-daemon at mindrot.org
Sat Jan 26 05:06:47 EST 2002
http://bugzilla.mindrot.org/show_bug.cgi?id=81
Summary: ssh cannot use ssh-askspass & passphrases as documented
Product: Portable OpenSSH
Version: 3.0.2p1
Platform: Sparc
OS/Version: SunOS
Status: NEW
Severity: normal
Priority: P2
Component: ssh
AssignedTo: openssh-unix-dev at mindrot.org
ReportedBy: dean.r.smart at mail.sprint.com
When using scp|ssh in nohup|cron|batch in a non interactive mode, sshconnect1.c
and sshconnect2.c do not have the ability to call read_passphrase in such a
manner to cause ssh-askpass to be utilized as documented in the man pages.
The calls are as follows for the released code:
# grep 'read_passphrase(' sshconnect[12].c-original
sshconnect1.c-original: passphrase = read_passphrase(buf, 0);
sshconnect1.c-original: response = read_passphrase(prompt, 0);
sshconnect1.c-original: password = read_passphrase(prompt, 0);
sshconnect2.c-original: password = read_passphrase(prompt, 0);
sshconnect2.c-original: passphrase = read_passphrase(prompt, 0);
sshconnect2.c-original: response = read_passphrase(prompt, echo ? RP_ECHO : 0);
(white space adjusted above)
Note that the second arguments are all set to zero. To make ssh work as
documented one call in each of the two sshconnect[12].c source files must be
altered to have the enabling second argument as below:
# grep 'read_passphrase(' sshconnect[12].c
sshconnect1.c: passphrase = read_passphrase(buf, RP_ALLOW_STDIN);
sshconnect1.c: response = read_passphrase(prompt, 0);
sshconnect1.c: password = read_passphrase(prompt, 0);
sshconnect2.c: password = read_passphrase(prompt, 0);
sshconnect2.c: passphrase = read_passphrase(prompt, RP_ALLOW_STDIN);
sshconnect2.c: response = read_passphrase(prompt, echo ? RP_ECHO : 0);
With this one single change to each of the sshconnect[12].c source files, ssh
will work as documented. Note the RP_ALLOW_STDIN constant. This has been tested
with protocols 1 and 2.
Note how the call is structured with ssh-add.c
# grep 'read_passphrase(' ssh-add.c
pass = read_passphrase(msg, RP_ALLOW_STDIN);
(I am using a self-decrypting binary* for ssh-askpass which authenticates the
calling self-decrypting binary* which calls scp and ssh. This authentification
is done via a number of environmental variables. After scp completes, these
authentificating environmetal variables are immediately unset. So this is quite
secure and ssh-askpass will not yield the passphrase to any non autheticated
invoking process. The use of ssh-agent and ssh-add are quite unsuitable for my
requirements, and would otherwise not be secure. These measures may seem
excessive but are neccesary to overcome the security risks involved in more
basic cron'd ssh-askpass implementations. I do-not/can-not assume a trust
relationship with root on the any systems where my applications are run.)
* - these two self-decrypting binaries can be the same binary
- FreeEss is being used to create the self decrypting binaries
------- You are receiving this mail because: -------
You are the assignee for the bug, or are watching the assignee.
More information about the openssh-unix-dev
mailing list