Setting up public key authentication over SSH
Every time I want to setup public key authentication over SSH, I have to look it up, and I've never found a simple guide, so here's mine.
Generate key on local machine
ssh-keygen -t rsa
It will ask you for a password but you can leave it blank.
Note you could also pick -t dsa
if you prefer.
Ensure that the remote server has a .ssh directory
Make sure the server your connecting to has a .ssh
directory in your home directory. If it doesn't exist you can run the ssh-keygen
command above, and it will create one with the correct permissions.
Copy your local public key to the remote server
If your remote server doesn't have a file called ~/.ssh/authorized_keys2
then we can create it. If that file already exists, you need to append to it instead of overwriting it, which the command below would do:
scp ~/.ssh/id_rsa.pub remote.server.com:.ssh/authorized_keys2
Now ssh to the remote server
Now you can ssh to the remote server without entering your password.
Security
Now keep in mind that all someone needs to login to the remote server, is the file on your local machine ~/.ssh/id_rsa
, so make sure it is secure.
To keep up to date on the latest OpenSSH vulnerabilities, try stack.watch.
Like this? Follow me ↯
Tweet Follow @pfreitagSetting up public key authentication over SSH was first published on January 18, 2006.
If you like reading about ssh, authentication, rsa, or unix then you might also like:
Want Security Advisories via Email?
Advisory Week is a new weekly email containing security advisories published by major software vendors (Adobe, Apple, Microsoft, etc).
Comments
cat ~/.ssh/id_dsa.pub | ssh [email protected] "cat - >> ~/.ssh/authorized_keys"
ssh-copy-id -i id_rsa.pub [email protected]
So all i have to do is like input machine details and have it send the ssh key over to the remote machine automatically. i can code it in just having a problem, when i run scp filename [email protected]:.ssh . How do i send the password via the php script when it asks. I tried doing a system command with the password but it doesn't work. Nor does it produce any kinda output.
I am using the System() Php Function.
Also, in response to harry who commented that there is no need to secure the file because it's a public key: You absolutely need to make sure this file is at least not writable by any other users (or they can simply append their keys to the file). As for why it shouldn't be readable by other users, that's just the first rule of security. If they don't need access, they don't have access.
Anyway, cheers.
scp ~/.ssh/id_rsa.pub remote.server.com:~/.ssh/authorized_keys2
what goes in the /etc/sshd_config file and where does it go please
I have chmod 600 the files in .ssh
thanks
tim
server$ chmod 700 ~/.ssh server$ chmod 600 ~/.ssh/authorized_keys
./ssh - 700
~/.ssh/authorized_keys - 644
regarding authorized_keys or authorized_keys2 .. please check your sshd server config file , i.e. /etc/ssh/sshd_config , prameter AuthorizedKeysFile. It will tell you what file your sshd server is using:)))
ssh remote-server it is still asking for a passowrd. Does the username on the localmachine and the remote need to match.
Thanks a million
Nav