I am trying to connect to a Linode (running Ubuntu 12.04 LTS) from my local machine (also running Ubuntu 12.04 LTS)
I have created a private and public key on my local machine and copied my public key to my Linode's authorized_keys file. However, whenever I try to ssh to my Linode I get the error message Permission denied (publickey)
.
It's not a problem with how ssh is set up on my Linode because I can ssh to it from my Windows machine using key authentication.
In my .ssh
directory on my local Ubuntu machine, I have my id_rsa
and id_rsa.pub
files. Do I need to create an authorized_keys file on my local machine?
EDIT: This is what I get when I run ssh -vvv -i id_rsa [youruser]@[yourLinode]
:
debug3: authmethod_lookup publickey
debug3: remaining preferred: keyboard-interactive,password
debug3: authmethod_is_enabled publickey
debug1: Next authentication method: publickey
debug1: Offering RSA public key: id_rsa
debug3: send_pubkey_test
debug2: we sent a publickey packet, wait for reply
debug1: Authentications that can continue: publickey
debug2: we did not send a packet, disable method
debug1: No more authentication methods to try.
Permission denied (publickey).
Best Answer
PubKeyAuthentication
Set up your client
Generate your key.
Configure ssh to use the key.
Copy your key to your server.
Your config file from step 2 should have something similar to the following:
You can add
IdentitiesOnly yes
to ensuressh
uses the specifiedIdentityFile
and no other keyfiles during authentication. SettingIdentitiesOnly
prevents failed authentications from occurring, whenssh
would otherwise attempt to login with multiple keys. Setting this is also considered more secure, as you're not leaking information about other keys you have installed, and maintaining separation of your keys between different levels of access.Troubleshooting
.ssh
directory has 700 and the files within are 600 permissions.ssh-keygen
will create files and directories for you with the proper permissionstail -f /var/log/auth.log
(on the server) and monitor errors when you attempt to loginIdentitiesOnly yes
to limit the authentication to use the single, specified key.