Take the 2-minute tour ×
Server Fault is a question and answer site for professional system and network administrators. It's 100% free, no registration required.

It seems my openssh client (OpenSSH_4.6p1, OpenSSL 0.9.8e 23 Feb 2007) is unable to open known_hosts or the id_rsa file, even though I can see them just fine by looking at their content with a 'type' command. This is being run as the 'SYSTEM' user for a Hudson instance which is running as a service. Notably, if I set the %HOME% environment variable to use another folder, such as c:\git, everything works just fine. This points to a permission issue, but the 'type' command seems to disprove that. What's going on, and how can I further diagnose this?

C:\hudson\jobs\blah\workspace>type C:\Windows\System32\config\systemprofile\.ssh\known_hosts 

git,10.3.11.91 ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAIEA00Er2Sidyjm+wf0X4Ck/Yld85HedJTJAwlQg9KoWL1rJYyA90Zcdm6qhjsZs+9yXvpoRALeUBBYa07aRpU9PwYQodhuAoE31c3WytKXPQ7XnwL+hCnsZckdmLFgX0Vptto/PZ0uZY5KhmvHN+shRovHbg9yfe979wAG7V5HaSRs=



C:\hudson\jobs\blah\workspace>type C:\Windows\System32\config\systemprofile\.ssh\id_rsa 

-----BEGIN RSA PRIVATE KEY-----

-----private key content was here-----

-----END RSA PRIVATE KEY-----



C:\hudson\jobs\blah\workspace>"c:\program files (x86)\git\bin\ssh" -T -vvv git@git ls 

OpenSSH_4.6p1, OpenSSL 0.9.8e 23 Feb 2007

debug2: ssh_connect: needpriv 0

debug1: Connecting to git [10.3.11.91] port 22.

debug1: Connection established.

debug1: identity file /c/Windows/System32/config/systemprofile/.ssh/identity type -1

debug1: identity file /c/Windows/System32/config/systemprofile/.ssh/id_rsa type -1

debug1: identity file /c/Windows/System32/config/systemprofile/.ssh/id_dsa type -1

debug1: Remote protocol version 1.99, remote software version OpenSSH_4.2

debug1: match: OpenSSH_4.2 pat OpenSSH*

debug1: Enabling compatibility mode for protocol 2.0

debug1: Local version string SSH-2.0-OpenSSH_4.6

debug2: fd 3 setting O_NONBLOCK

debug1: SSH2_MSG_KEXINIT sent

debug1: SSH2_MSG_KEXINIT received

debug2: kex_parse_kexinit: diffie-hellman-group-exchange-sha256,diffie-hellman-group-exchange-sha1,diffie-hellman-group14-sha1,diffie-hellman-group1-sha1

debug2: kex_parse_kexinit: ssh-rsa,ssh-dss

debug2: kex_parse_kexinit: aes128-cbc,3des-cbc,blowfish-cbc,cast128-cbc,arcfour128,arcfour256,arcfour,aes192-cbc,aes256-cbc,rijndael-cbc@lysator.liu.se,aes128-ctr,aes192-ctr,aes256-ctr

debug2: kex_parse_kexinit: aes128-cbc,3des-cbc,blowfish-cbc,cast128-cbc,arcfour128,arcfour256,arcfour,aes192-cbc,aes256-cbc,rijndael-cbc@lysator.liu.se,aes128-ctr,aes192-ctr,aes256-ctr

debug2: kex_parse_kexinit: hmac-md5,hmac-sha1,hmac-ripemd160,hmac-ripemd160@openssh.com,hmac-sha1-96,hmac-md5-96

debug2: kex_parse_kexinit: hmac-md5,hmac-sha1,hmac-ripemd160,hmac-ripemd160@openssh.com,hmac-sha1-96,hmac-md5-96

debug2: kex_parse_kexinit: none,zlib@openssh.com,zlib

debug2: kex_parse_kexinit: none,zlib@openssh.com,zlib

debug2: kex_parse_kexinit: 

debug2: kex_parse_kexinit: 

debug2: kex_parse_kexinit: first_kex_follows 0 

debug2: kex_parse_kexinit: reserved 0 

debug2: kex_parse_kexinit: diffie-hellman-group-exchange-sha1,diffie-hellman-group14-sha1,diffie-hellman-group1-sha1

debug2: kex_parse_kexinit: ssh-rsa,ssh-dss

debug2: kex_parse_kexinit: aes128-cbc,3des-cbc,blowfish-cbc,cast128-cbc,arcfour128,arcfour256,arcfour,aes192-cbc,aes256-cbc,rijndael-cbc@lysator.liu.se,aes128-ctr,aes192-ctr,aes256-ctr

debug2: kex_parse_kexinit: aes128-cbc,3des-cbc,blowfish-cbc,cast128-cbc,arcfour128,arcfour256,arcfour,aes192-cbc,aes256-cbc,rijndael-cbc@lysator.liu.se,aes128-ctr,aes192-ctr,aes256-ctr

debug2: kex_parse_kexinit: hmac-md5,hmac-sha1,hmac-ripemd160,hmac-ripemd160@openssh.com,hmac-sha1-96,hmac-md5-96

debug2: kex_parse_kexinit: hmac-md5,hmac-sha1,hmac-ripemd160,hmac-ripemd160@openssh.com,hmac-sha1-96,hmac-md5-96

debug2: kex_parse_kexinit: none,zlib@openssh.com

debug2: kex_parse_kexinit: none,zlib@openssh.com

debug2: kex_parse_kexinit: 

debug2: kex_parse_kexinit: 

debug2: kex_parse_kexinit: first_kex_follows 0 

debug2: kex_parse_kexinit: reserved 0 

debug2: mac_init: found hmac-md5

debug1: kex: server->client aes128-cbc hmac-md5 none

debug2: mac_init: found hmac-md5

debug1: kex: client->server aes128-cbc hmac-md5 none

debug1: SSH2_MSG_KEX_DH_GEX_REQUEST(1024<1024<8192) sent

debug1: expecting SSH2_MSG_KEX_DH_GEX_GROUP

debug2: dh_gen_key: priv key bits set: 130/256

debug2: bits set: 489/1024

debug1: SSH2_MSG_KEX_DH_GEX_INIT sent

debug1: expecting SSH2_MSG_KEX_DH_GEX_REPLY

debug3: check_host_in_hostfile: filename /c/Windows/System32/config/systemprofile/.ssh/known_hosts

debug3: check_host_in_hostfile: match line 1

debug3: check_host_in_hostfile: filename /c/Windows/System32/config/systemprofile/.ssh/known_hosts

debug3: check_host_in_hostfile: match line 1

debug1: Host 'qvtgit' is known and matches the RSA host key.

debug1: Found key in /c/Windows/System32/config/systemprofile/.ssh/known_hosts:1

debug2: bits set: 511/1024

debug1: ssh_rsa_verify: signature correct

debug2: kex_derive_keys

debug2: set_newkeys: mode 1

debug1: SSH2_MSG_NEWKEYS sent

debug1: expecting SSH2_MSG_NEWKEYS

debug2: set_newkeys: mode 0

debug1: SSH2_MSG_NEWKEYS received

debug1: SSH2_MSG_SERVICE_REQUEST sent

debug2: service_accept: ssh-userauth

debug1: SSH2_MSG_SERVICE_ACCEPT received

debug2: key: /c/Windows/System32/config/systemprofile/.ssh/identity (0x0)

debug2: key: /c/Windows/System32/config/systemprofile/.ssh/id_rsa (0x0)

debug2: key: /c/Windows/System32/config/systemprofile/.ssh/id_dsa (0x0)

debug1: Authentications that can continue: publickey,keyboard-interactive

debug3: start over, passed a different list publickey,keyboard-interactive

debug3: preferred publickey,keyboard-interactive,password

debug3: authmethod_lookup publickey

debug3: remaining preferred: keyboard-interactive,password

debug3: authmethod_is_enabled publickey

debug1: Next authentication method: publickey

debug1: Trying private key: /c/Windows/System32/config/systemprofile/.ssh/identity

debug3: no such identity: /c/Windows/System32/config/systemprofile/.ssh/identity

debug1: Trying private key: /c/Windows/System32/config/systemprofile/.ssh/id_rsa

debug3: no such identity: /c/Windows/System32/config/systemprofile/.ssh/id_rsa

debug1: Trying private key: /c/Windows/System32/config/systemprofile/.ssh/id_dsa

debug3: no such identity: /c/Windows/System32/config/systemprofile/.ssh/id_dsa

debug2: we did not send a packet, disable method

debug3: authmethod_lookup keyboard-interactive

debug3: remaining preferred: password

debug3: authmethod_is_enabled keyboard-interactive

debug1: Next authentication method: keyboard-interactive

debug2: userauth_kbdint

debug2: we sent a keyboard-interactive packet, wait for reply

debug2: input_userauth_info_req

debug2: input_userauth_info_req: num_prompts 1
share|improve this question

migrated from stackoverflow.com Jul 15 '09 at 9:11

This question came from our site for professional and enthusiast programmers.

    
Start each line with 4 spaces for <pre>-like formatting –  Mark Biek Jul 14 '09 at 21:52

3 Answers 3

OpenSSH refuses to use private keys that are readable by anyone other than their owner - check that the only account with permissions to that file is the SYSTEM account.

(Further inspection indicates this is not the problem in your case.)

share|improve this answer
    
also can be picky about who can write to these files (and I believe the parent folder too, though could be wrong there). Try with the least set of permissions, rather than the most. –  Tom Newton Jul 15 '09 at 10:07
    
I believe openssh is pretty communicative when ignoring a file that is too open. Were this the problem, I should see a message like "Permissions 0644 for '/cygdrive/c/Users/Paul/.ssh/id_rsa' are too open." –  Michael Donohue Jul 15 '09 at 13:24

Inspection of the OpenSSH source shows that this error message is only ever printed in conditions where the stat(2) function call fails: see line 1224 of sshconnect2.c. It would be interesting to see the output of 'whoami && stat /c/Windows/System32/config/systemprofile/.ssh/id_dsa' from the Cygwin environment.

Alternatively, try a tool like Process Monitor to see what is going on at the API level - perhaps the error message returned when the identity files are accessed will give you a clue.

share|improve this answer

It could also be the Virtual Store mechanism in Vista, which creates an overlay over directories not usually accessible for the user, where the user can write.

If the files were copied there by a non-admin account, it's possible they've ended up in

%USERPROFILE%\AppData\Local\VirtualStore

I.e. you copied the keys with your user to the path(s) specified, vista created an overlay in your users VirtualStore containing those files. However, when invoked as another user, that user will not see the changes contained in your users VirtualStore.

share|improve this answer
    
That does sound pretty plausible, but I can't find a corresponding directory structure in the VirtualStore folder, so I don't think that's it. –  Michael Donohue Jul 16 '09 at 21:41

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.