Configuration for private/test environment only - do not use in production! You need to execute all steps as root.
Generating the key pair on client (rsa 2048-Bit key):
(client = local computer // server = remote computer)
# ssh-keygen -b 2048 -t rsa
This will generate two files: id_rsa and id_rsa.pub in the folder /home/<user>/.ssh.
id_rsa identifies the user and the computer and must not be made public.
id_rsa.pub will be copied to the server and added to the authorized_keys file.
Copy the public key
# cd /home/<user>/.ssh # sftp <server> sftp> put id_rsa.pub sftp> quit
Add the public key to authorized_keys file
# ssh <server>
Create .ssh folder (if doesn't exists)
# mkdir .ssh # chmod 700 .ssh
Insert the public key in authorized_keys:
# cat id_rsa.pub >> .ssh/authorized_keys
If the file is just created:
# chmod 600 .ssh/authorized_keys
Clean up:
# rm id_rsa.pub
Login as root on server
Change the following in /etc/ssh/sshd_config
PermitRootLogin yes RSAAuthentication yes PubkeyAuthentication yes AuthorizedKeysFile .ssh/authorized_keys
PermitRootLogin yes should only be done in test enviroments. Use at own risk!
Restart sshd
# service sshd restart