1

For some reason, ssh over publickey isn't working as expected. I've set this up before, and it's worked before on other machines. No idea what I'm doing wrong here...

very verbose output of ssh

client@localmachine$ ssh -o PreferredAuthentications=publickey user@ServerIP -vvvvv
OpenSSH_6.2p2, OSSLShim 0.9.8r 8 Dec 2011
debug1: Reading configuration data /path/to/.ssh/config
debug1: /path/to/.ssh/config line 1: Applying options for *
debug1: Reading configuration data /etc/ssh_config
debug1: /etc/ssh_config line 20: Applying options for *
debug1: /etc/ssh_config line 53: Applying options for *
debug1: auto-mux: Trying existing master
debug1: Control socket "/path/to/.ssh/sockets/pi@ServerIP-22" does not exist
debug2: ssh_connect: needpriv 0
debug1: Connecting to ServerIP [ServerIP] port 22.
debug1: Connection established.
debug3: Incorrect RSA1 identifier
debug3: Could not load "/path/to/.ssh/id_rsa" as a RSA1 public key
debug1: identity file /path/to/.ssh/id_rsa type 1
debug1: identity file /path/to/.ssh/id_rsa-cert type -1
debug1: identity file /path/to/.ssh/id_dsa type -1
debug1: identity file /path/to/.ssh/id_dsa-cert type -1
debug1: Enabling compatibility mode for protocol 2.0
debug1: Local version string SSH-2.0-OpenSSH_6.2
debug1: Remote protocol version 2.0, remote software version OpenSSH_6.0p1 Debian-4+deb7u1
debug1: match: OpenSSH_6.0p1 Debian-4+deb7u1 pat OpenSSH*
debug2: fd 3 setting O_NONBLOCK
debug3: load_hostkeys: loading entries for host "ServerIP" from file "/path/to/.ssh/known_hosts"
debug3: load_hostkeys: found key type RSA in file /path/to/.ssh/known_hosts:49
debug3: load_hostkeys: loaded 1 keys
debug3: order_hostkeyalgs: prefer hostkeyalgs: [email protected],[email protected],ssh-rsa
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: [email protected],[email protected],ssh-rsa,[email protected],[email protected],ssh-dss
debug2: kex_parse_kexinit: aes128-ctr,aes192-ctr,aes256-ctr,arcfour256,arcfour128,[email protected],[email protected],aes128-cbc,3des-cbc,blowfish-cbc,cast128-cbc,aes192-cbc,aes256-cbc,arcfour,[email protected]
debug2: kex_parse_kexinit: aes128-ctr,aes192-ctr,aes256-ctr,arcfour256,arcfour128,[email protected],[email protected],aes128-cbc,3des-cbc,blowfish-cbc,cast128-cbc,aes192-cbc,aes256-cbc,arcfour,[email protected]
debug2: kex_parse_kexinit: [email protected],[email protected],[email protected],[email protected],[email protected],[email protected],[email protected],[email protected],[email protected],hmac-md5,hmac-sha1,[email protected],[email protected],hmac-sha2-256,hmac-sha2-512,hmac-ripemd160,[email protected],hmac-sha1-96,hmac-md5-96
debug2: kex_parse_kexinit: [email protected],[email protected],[email protected],[email protected],[email protected],[email protected],[email protected],[email protected],[email protected],hmac-md5,hmac-sha1,[email protected],[email protected],hmac-sha2-256,hmac-sha2-512,hmac-ripemd160,[email protected],hmac-sha1-96,hmac-md5-96
debug2: kex_parse_kexinit: none,[email protected],zlib
debug2: kex_parse_kexinit: none,[email protected],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: 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,ssh-dss,ecdsa-sha2-nistp256
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,[email protected]
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,[email protected]
debug2: kex_parse_kexinit: hmac-md5,hmac-sha1,[email protected],hmac-sha2-256,hmac-sha2-256-96,hmac-sha2-512,hmac-sha2-512-96,hmac-ripemd160,[email protected],hmac-sha1-96,hmac-md5-96
debug2: kex_parse_kexinit: hmac-md5,hmac-sha1,[email protected],hmac-sha2-256,hmac-sha2-256-96,hmac-sha2-512,hmac-sha2-512-96,hmac-ripemd160,[email protected],hmac-sha1-96,hmac-md5-96
debug2: kex_parse_kexinit: none,[email protected]
debug2: kex_parse_kexinit: none,[email protected]
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: 129/256
debug2: bits set: 508/1024
debug1: SSH2_MSG_KEX_DH_GEX_INIT sent
debug1: expecting SSH2_MSG_KEX_DH_GEX_REPLY
debug1: Server host key: RSA 2e:2b:98:0b:22:22:e8:fa:5d:1b:73:f8:02:bf:65:9b
debug3: load_hostkeys: loading entries for host "ServerIP" from file "/path/to/.ssh/known_hosts"
debug3: load_hostkeys: found key type RSA in file /path/to/.ssh/known_hosts:49
debug3: load_hostkeys: loaded 1 keys
debug1: Host 'ServerIP' is known and matches the RSA host key.
debug1: Found key in /path/to/.ssh/known_hosts:49
debug2: bits set: 506/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: /path/to/.ssh/id_rsa (0x7fae0940b730),
debug2: key: /path/to/.ssh/id_dsa (0x0),
debug1: Authentications that can continue: publickey,password
debug3: start over, passed a different list publickey,password
debug3: preferred publickey
debug3: authmethod_lookup publickey
debug3: remaining preferred: 
debug3: authmethod_is_enabled publickey
debug1: Next authentication method: publickey
debug1: Offering RSA public key: /path/to/.ssh/id_rsa
debug3: send_pubkey_test
debug2: we sent a publickey packet, wait for reply
debug1: Authentications that can continue: publickey,password
debug1: Trying private key: /path/to/.ssh/id_dsa
debug3: no such identity: /path/to/.ssh/id_dsa: No such file or directory
debug2: we did not send a packet, disable method
debug1: No more authentication methods to try.
Permission denied (publickey,password).

This is the output of /var/log/auth.log (note I SSH'd in using password to collect the log:

user@server:~$ cat /var/log/auth.log 
Jul 25 01:17:22 server sshd[2385]: Server listening on 0.0.0.0 port 22.
Jul 25 01:29:42 server sshd[2440]: Connection closed by ClientIP [preauth]
Jul 25 01:29:48 server sshd[2444]: Accepted password for user from ClientIP port 64375 ssh2
Jul 25 01:29:48 server sshd[2444]: pam_unix(sshd:session): session opened for user user by (uid=0)

File permissions of ~/.ssh/

user@server:~/.ssh$ ls -alh
total 28K
drwx------ 2 pi   pi   4.0K Jul 25 00:22 .
drwxr-xr-x 5 pi   pi   4.0K Jul 25 00:22 ..
-rwx------ 1 root root 4.3K Jul 24 00:15 authorized_keys
-rw------- 1 root root 1.7K Jul 23 23:53 id_rsa
-rw-rw-r-- 1 root root  404 Jul 23 23:53 id_rsa.pub
-rw-rw-r-- 1 root root 3.7K Jul 23 23:53 known_hosts

and yes - the my local ~/.ssh/id_rsa.pub is in the servers ~/.ssh/authorized_keys

[EDIT - Adding sshd_config]

user@server:~$ cat /etc/ssh/sshd_config 
# Package generated configuration file
# See the sshd_config(5) manpage for details

# What ports, IPs and protocols we listen for
Port 22
# Use these options to restrict which interfaces/protocols sshd will bind to
#ListenAddress ::
#ListenAddress 0.0.0.0
Protocol 2
# HostKeys for protocol version 2
HostKey /etc/ssh/ssh_host_rsa_key
HostKey /etc/ssh/ssh_host_dsa_key
HostKey /etc/ssh/ssh_host_ecdsa_key
#Privilege Separation is turned on for security
UsePrivilegeSeparation yes

# Lifetime and size of ephemeral version 1 server key
KeyRegenerationInterval 3600
ServerKeyBits 768

# Logging
SyslogFacility AUTH
LogLevel INFO

# Authentication:
LoginGraceTime 120
PermitRootLogin yes
StrictModes yes

RSAAuthentication yes
PubkeyAuthentication yes
#AuthorizedKeysFile %h/.ssh/authorized_keys

# Don't read the user's ~/.rhosts and ~/.shosts files
IgnoreRhosts yes
# For this to work you will also need host keys in /etc/ssh_known_hosts
RhostsRSAAuthentication no
# similar for protocol version 2
HostbasedAuthentication no
# Uncomment if you don't trust ~/.ssh/known_hosts for RhostsRSAAuthentication
#IgnoreUserKnownHosts yes

# To enable empty passwords, change to yes (NOT RECOMMENDED)
PermitEmptyPasswords no

# Change to yes to enable challenge-response passwords (beware issues with
# some PAM modules and threads)
ChallengeResponseAuthentication no

# Change to no to disable tunnelled clear text passwords
#PasswordAuthentication yes

# Kerberos options
#KerberosAuthentication no
#KerberosGetAFSToken no
#KerberosOrLocalPasswd yes
#KerberosTicketCleanup yes

# GSSAPI options
#GSSAPIAuthentication no
#GSSAPICleanupCredentials yes

X11Forwarding yes
X11DisplayOffset 10
PrintMotd no
PrintLastLog yes
TCPKeepAlive yes
#UseLogin no

#MaxStartups 10:30:60
#Banner /etc/issue.net

# Allow client to pass locale environment variables
AcceptEnv LANG LC_*

Subsystem sftp /usr/lib/openssh/sftp-server

# Set this to 'yes' to enable PAM authentication, account processing,
# and session processing. If this is enabled, PAM authentication will
# be allowed through the ChallengeResponseAuthentication and
# PasswordAuthentication.  Depending on your PAM configuration,
# PAM authentication via ChallengeResponseAuthentication may bypass
# the setting of "PermitRootLogin without-password".
# If you just want the PAM account and session checks to run without
# PAM authentication, then enable this but set PasswordAuthentication
# and ChallengeResponseAuthentication to 'no'.
UsePAM yes

2 Answers 2

1

this looks weird to me:

user@server:~/.ssh$ ls -alh
total 28K
drwx------ 2 pi   pi   4.0K Jul 25 00:22 .
drwxr-xr-x 5 pi   pi   4.0K Jul 25 00:22 ..
-rwx------ 1 root root 4.3K Jul 24 00:15 authorized_keys
-rw------- 1 root root 1.7K Jul 23 23:53 id_rsa
-rw-rw-r-- 1 root root  404 Jul 23 23:53 id_rsa.pub
-rw-rw-r-- 1 root root 3.7K Jul 23 23:53 known_hosts

By the looks of this, I'm guessing your local user is pi, so you probably don't have permissions to read your private key (owned by root).

try running this as the same user that's running the ssh command:

sudo chown $USER:$USER -R ~/.ssh
2
  • Sorry - that's my bad. Was trying to replace users and hosts to make it clearer. Obviously missed a few. Thanks for the suggestion! I was so focused on the permissions I completely missed the user. That indeed solved the problem!
    – Jono
    Jul 27, 2014 at 5:09
  • For the future - If you're dealing with permissions, keep in mind that you need to check: permissions of the file, owner and group, permissions of the entire path. Usually people skip the last one, but it's important specially if you have symlinks. :)
    – zidarsk8
    Jul 28, 2014 at 7:07
0

I think you are logging in as root (your logs refer to uid=0). If so (and ignoring the bad practices whine), you may need to enable "PermitRootLogin yes".

Also check /etc/ssh/sshd_config and make sure there is no "AllowUsers" line, or if there is that your user is there. If this doesn't work /var/log/audit

1
  • Thanks for the comments. I've included my sshd_config above. PermitRootLogin enabled, and AllowUsers not present. I'm reasonably certain that the uid=0 line is because of supervisord.
    – Jono
    Jul 25, 2014 at 22:42

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .