Take the 2-minute tour ×
Super User is a question and answer site for computer enthusiasts and power users. It's 100% free, no registration required.

I am trying to ssh two machines and I would prefer to use keys generated for authentication rather than password. This will enable me to automate port-forwarding and many other things.

Note: My server is debian.

Below is what I did.

  1. I generated the key:

    ssh-keygen -t dsa
    
  2. Copied the id_dsa.pub to the remote server's ~/.ssh

  3. ssh-add -D to delete old keys. Gues I didn't need them
  4. ssh-add ~/.ssh/id_dsa to add the private id 5.tried to connect to the external server as

    ssh root@remote-ip

  5. Still settled for password even after my acceptance to be added on known-hosts.
  6. Tried ssh -vvv root@remote-ip and log obtain is posted below.
OpenSSH_5.8p1 Debian-7ubuntu1, OpenSSL 1.0.0e 6 Sep 2011
debug1: Reading configuration data /etc/ssh/ssh_config
debug1: Applying options for *
debug2: ssh_connect: needpriv 0
debug1: Connecting to 184.154.191.58 [184.154.191.58] port 18765.
debug1: Connection established.
debug1: identity file /home/eclipse/.ssh/id_rsa type -1
debug1: identity file /home/eclipse/.ssh/id_rsa-cert type -1
debug1: identity file /home/eclipse/.ssh/id_dsa type 2
debug1: Checking blacklist file /usr/share/ssh/blacklist.DSA-1024
debug1: Checking blacklist file /etc/ssh/blacklist.DSA-1024
debug1: identity file /home/eclipse/.ssh/id_dsa-cert type -1
debug1: identity file /home/eclipse/.ssh/id_ecdsa type -1
debug1: identity file /home/eclipse/.ssh/id_ecdsa-cert type -1
debug1: Remote protocol version 2.0, remote software version OpenSSH_4.3
debug1: match: OpenSSH_4.3 pat OpenSSH_4*
debug1: Enabling compatibility mode for protocol 2.0
debug1: Local version string SSH-2.0-OpenSSH_5.8p1 Debian-7ubuntu1
debug2: fd 3 setting O_NONBLOCK
debug3: put_host_port: [184.154.191.58]:18765
debug3: load_hostkeys: loading entries for host "[184.154.191.58]:18765" from file "/home/eclipse/.ssh/known_hosts"
debug3: load_hostkeys: found key type RSA in file /home/eclipse/.ssh/known_hosts:3
debug3: load_hostkeys: loaded 1 keys
debug3: order_hostkeyalgs: prefer hostkeyalgs: ssh-rsa-cert-v01@openssh.com,ssh-rsa-cert-v00@openssh.com,ssh-rsa
debug1: SSH2_MSG_KEXINIT sent
debug1: SSH2_MSG_KEXINIT received
debug2: kex_parse_kexinit: ecdh-sha2-nistp256,ecdh-sha2-nistp384,ecdh-sha2-nistp521,diffie-hellman-group-exchange-sha256,diffie-hellman-group-exchange-sha1,diffie-hellman-group14-sha1,diffie-hellman-group1-sha1
debug2: kex_parse_kexinit: ssh-rsa-cert-v01@openssh.com,ssh-rsa-cert-v00@openssh.com,ssh-rsa,ecdsa-sha2-nistp256-cert-v01@openssh.com,ecdsa-sha2-nistp384-cert-v01@openssh.com,ecdsa-sha2-nistp521-cert-v01@openssh.com,ssh-dss-cert-v01@openssh.com,ssh-dss-cert-v00@openssh.com,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,ssh-dss
debug2: kex_parse_kexinit: aes128-ctr,aes192-ctr,aes256-ctr,arcfour256,arcfour128,aes128-cbc,3des-cbc,blowfish-cbc,cast128-cbc,aes192-cbc,aes256-cbc,arcfour,rijndael-cbc@lysator.liu.se
debug2: kex_parse_kexinit: aes128-ctr,aes192-ctr,aes256-ctr,arcfour256,arcfour128,aes128-cbc,3des-cbc,blowfish-cbc,cast128-cbc,aes192-cbc,aes256-cbc,arcfour,rijndael-cbc@lysator.liu.se
debug2: kex_parse_kexinit: hmac-md5,hmac-sha1,umac-64@openssh.com,hmac-ripemd160,hmac-ripemd160@openssh.com,hmac-sha1-96,hmac-md5-96
debug2: kex_parse_kexinit: hmac-md5,hmac-sha1,umac-64@openssh.com,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-ctr,aes192-ctr,aes256-ctr,arcfour256,arcfour128,aes128-cbc,3des-cbc,blowfish-cbc,cast128-cbc,aes192-cbc,aes256-cbc,arcfour,rijndael-cbc@lysator.liu.se
debug2: kex_parse_kexinit: aes128-ctr,aes192-ctr,aes256-ctr,arcfour256,arcfour128,aes128-cbc,3des-cbc,blowfish-cbc,cast128-cbc,aes192-cbc,aes256-cbc,arcfour,rijndael-cbc@lysator.liu.se
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
debug2: kex_parse_kexinit: none
debug2: kex_parse_kexinit: 
debug2: kex_parse_kexinit: 
debug2: kex_parse_kexinit: first_kex_follows 0 
debug2: kex_parse_kexinit: reserved 0 
debug2: mac_setup: found hmac-md5
debug1: kex: server->client aes128-ctr hmac-md5 none
debug2: mac_setup: found hmac-md5
debug1: kex: client->server aes128-ctr 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: 125/256
debug2: bits set: 518/1024
debug1: SSH2_MSG_KEX_DH_GEX_INIT sent
debug1: expecting SSH2_MSG_KEX_DH_GEX_REPLY
debug1: Server host key: RSA 5d:ce:fb:75:de:6f:52:f9:ad:41:e3:92:9a:53:ee:f0
debug3: put_host_port: [184.154.191.58]:18765
debug3: put_host_port: [184.154.191.58]:18765
debug3: load_hostkeys: loading entries for host "[184.154.191.58]:18765" from file "/home/eclipse/.ssh/known_hosts"
debug3: load_hostkeys: found key type RSA in file /home/eclipse/.ssh/known_hosts:3
debug3: load_hostkeys: loaded 1 keys
debug3: load_hostkeys: loading entries for host "[184.154.191.58]:18765" from file "/home/eclipse/.ssh/known_hosts"
debug3: load_hostkeys: found key type RSA in file /home/eclipse/.ssh/known_hosts:3
debug3: load_hostkeys: loaded 1 keys
debug1: Host '[184.154.191.58]:18765' is known and matches the RSA host key.
debug1: Found key in /home/eclipse/.ssh/known_hosts:3
debug2: bits set: 514/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: Roaming not allowed by server
debug1: SSH2_MSG_SERVICE_REQUEST sent
debug2: service_accept: ssh-userauth
debug1: SSH2_MSG_SERVICE_ACCEPT received
debug2: key: /home/eclipse/.ssh/id_rsa ((nil))
debug2: key: /home/eclipse/.ssh/id_dsa (0x21b20e18)
debug2: key: /home/eclipse/.ssh/id_ecdsa ((nil))
debug1: Authentications that can continue: password,keyboard-interactive
debug3: start over, passed a different list password,keyboard-interactive
debug3: preferred gssapi-keyex,gssapi-with-mic,publickey,keyboard-interactive,password
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
Password: 

Kindly someone help.

share|improve this question

3 Answers 3

I've spent way too much time debugging passwordless public-key ssh auth over the years, so I wanted to post some suggestions for others who come along:

  • As mgorven posted, make sure file permissions are set correctly on the remote host. This is the most common issue in my experience. $ chmod -R username:username ~/.ssh $ chmod -R 700 ~/.ssh

  • Running ssh from the client with "-v", "-vv" or "-vvv" has given me a lot of output, but it has NEVER told me what configuration is wrong on the remote machine. It's probably to prevent evil h4x0rs from getting too much info or something like that.

  • If you have physical (non-ssh) access to the remote machine, you can try stopping the sshd service and manually running sshd with the "-d" flag to output debugging info to the console.

  • Setting up passwordless auth for root is a major security no-no, but if you still want to do it, try setting up a non-root user first. Then if you have problems enabling it for root, you will know that a setting specific to root/sysadmin accounts is responsible.

  • Check if SELinux is enabled. If it is, it may be interfering. Especially if you're trying to setup passwordless auth for a superuser account.

Hopefully this will save people the hours of frustrating troubleshooting time that ssh has inflicted on the rest of us.

share|improve this answer
    
Shouldn't that be $ chown -R username:username ~/.ssh? –  user20342 Aug 4 at 17:45

OpenSSH is very anal about file permissions. Make sure that /root/.ssh and everything in it is owned by the correct user, and is only readable and writable by the owner.

chown -R root:root /root/.ssh
chmod -R u=rwX,g=,o= /root/.ssh

If that still doesn't work, paste the contents of /var/log/auth.log and possibly /var/log/syslog on the server while trying to login.

share|improve this answer

You put the public key in the wrong place. On the server, allowed keys are stored in the file ~/.ssh/authorized_keys, one key per line. The SSH server ignores all other files in ~/.ssh.

(You can use ssh-copy-id <server> to authorize the key easily.)


Second, did you really run sshd -D and sshd id_dsa? The command is ssh-add:

ssh-add -D
ssh-add ~/.ssh/id_dsa
share|improve this answer
    
Sorry for misleading about the ssh-add. I have corrected that. I did the delete and add well. –  felix cheruiyot Apr 21 '12 at 19:35
    
Maybe wrong authorized_keys. Can I ssh-copy-id with port option. –  felix cheruiyot Apr 21 '12 at 19:39
    
I dont have access to port 22 of the remote server. Tried ssh-copy-id xxx.xxx.xxx.xxx -p 18765. It false back to port 22 –  felix cheruiyot Apr 21 '12 at 19:40
    
updated the authorized_keys by direct copy-paste via vi but still not working –  felix cheruiyot Apr 21 '12 at 19:59

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.