0

I'm trying to setup passwordless login on two macs, mini and bigmac. It's working on one, not on the other. On each machine:

I use "ssh-keygen -t rsa" to generate id_rsa and id_rsa.pub (pressing enter when asked for a password). I mv the resulting files to ~/.ssh, then scp id_rsa.pub to ~/.ssh/authorized_keys to the opposite Mac.

For ssh from "mini" into "bigmac" the passwordless login works. When I try to ssh from "bigmac" into "mini" I'm asked for a password:

bigmac:~ jedevnull$ cd .ssh
bigmac:.ssh jedevnull$ ls
authorized_keys id_rsa      id_rsa.pub      known_hosts
bigmac:.ssh jedevnull$ ssh -v mini

OpenSSH_6.2p2, OSSLShim 0.9.8r 8 Dec 2011
debug1: Reading configuration data /etc/ssh_config
debug1: /etc/ssh_config line 20: Applying options for *
debug1: Connecting to mini [192.168.1.20] port 22.
debug1: Connection established.
debug1: identity file /Users/jedevnull/.ssh/id_rsa type 1
debug1: identity file /Users/jedevnull/.ssh/id_rsa-cert type -1
debug1: identity file /Users/jedevnull/.ssh/id_dsa type -1
debug1: identity file /Users/jedevnull/.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.9
debug1: match: OpenSSH_6.9 pat OpenSSH*
debug1: SSH2_MSG_KEXINIT sent
debug1: SSH2_MSG_KEXINIT received
debug1: kex: server->client aes128-ctr hmac-sha1-etm@openssh.com none
debug1: kex: client->server aes128-ctr hmac-sha1-etm@openssh.com none
debug1: SSH2_MSG_KEX_DH_GEX_REQUEST(1024<2048<8192) sent
debug1: expecting SSH2_MSG_KEX_DH_GEX_GROUP
debug1: SSH2_MSG_KEX_DH_GEX_INIT sent
debug1: expecting SSH2_MSG_KEX_DH_GEX_REPLY
debug1: Server host key: RSA 0d:2e:de:45:00:ff:9b:ff:96:c5:f6:bd:c6:6a:b0:ec
debug1: Host 'mini' is known and matches the RSA host key.
debug1: Found key in /Users/jedevnull/.ssh/known_hosts:1
debug1: ssh_rsa_verify: signature correct
debug1: SSH2_MSG_NEWKEYS sent
debug1: expecting SSH2_MSG_NEWKEYS
debug1: SSH2_MSG_NEWKEYS received
debug1: Roaming not allowed by server
debug1: SSH2_MSG_SERVICE_REQUEST sent
debug1: SSH2_MSG_SERVICE_ACCEPT received
debug1: Authentications that can continue: publickey,keyboard-interactive
debug1: Next authentication method: publickey
debug1: Offering RSA public key: /Users/jedevnull/.ssh/id_rsa
debug1: Authentications that can continue: publickey,keyboard-interactive
debug1: Trying private key: /Users/jedevnull/.ssh/id_dsa
debug1: Next authentication method: keyboard-interactive
Password:

bigmac's id_rsa.pub and mini's authorized_keys are the same.

  • Can you post the debug messages on both the server and client sides? To get debug logs on the server side, run an instance of sshd on a non-standard port, e.g. sudo /usr/sbin/sshd -d -p2222 then on the client run ssh -v -p2222 mini to connect. (Note running sshd with the -d flag will only accept or reject one connection then exit, it won't stay on as a daemon.) – user4556274 Aug 13 '16 at 20:42
  • Thanks for this tip. This revealed the error: "Authentication refused: bad ownership or modes for directory ". Changing my home directory's permissions (0755) fixed my problem. If you post it as an answer I'll mark it as accepted. – jocala Aug 13 '16 at 22:52
1

To find the cause of the problem, it would be helpful to see the debug messages on both the server and client sides of the connection. The -d option on the server allows for verbose debug messages in the terminal for a single connection (or rejection). So, for example, on the server side run

/usr/sbin/sshd -d -p2222

(running on a non-standard port so it doesn't interfere with the regular sshd), and on the client side

ssh -v -p2222 ${SERVER_IP}

For a bit more detail,

/usr/sbin/sshd -dd -p2222
ssh -vv -p2222 ${SERVER_IP}
0

Any n*x system with SSH service (not the ssh command, but the sshd) relies on an existing, accessible account and a file that contains valid public keys for that account (= user).

Both the folder ~/.ssh and the key itself should only be accessible by that specific user. The key should be chmod to 600, the folder should be 700, so it's not accessible by anyone other than the user (be careful not to set it to 600, because than you can't read the folder yourself). Same for the authorized_keys file: I'd recommend 600.

If the file containing the key does not match the requested restriction (only you have access), ssh login will most likely fail.

By the way (little off topic): In this case, maybe @jocala could have generated one pair and used it on both machines. If you're using multiple machines of different customers, it's very recommendable to have multiple keys. To aid you which key to use, you can always create (and fill) a ~/.shh/config file in stead of always specifying the key by using ssh -i [path_to_key] name@server.dom.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

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