SSH without password or authentication using encrypted keys

In the future, using the website cloudhosting.lv, you agree to the rules of using Cookies. Read more. I agree

SSH without password or authentication using encrypted keys

Do you have a stand-alone server, and you access it via ssh numerous times a day and each time entering the password, which is more than 10 characters?

Here you can learn how to fix this problem.

SSH Keys. Or Identity / Pubkey method

When using Identity / Pubkey method of identification the use of static passwords is excluded. To avoid typing every time passwords that can be intercepted by a "keylogger", you need to keep on disk multiple keys, which will be used for authentication.

Here are some of the positive aspects of this type of authentication:

  • No one can enter the server with your account, because they need a private key and passphrase.
  • The server administrator can remove the password of an account in order to exclude its discredit.
  • You can use the ssh-agent and it will provide authentication information for you.
  • You can set certain restrictions, such as prohibiting the port forwarding, the performance of certain programs, etc.

Generating SSH keys. Or Identity / Pubkey creation

To generate the keys you need to use the program ssh-keygen.

localhost $ ssh-keygen -t rsa

With -t rsa option we specified the type of the keys (there are possible key variations- rsa1, rsa or dsa)

SSH server configuration

All of the above manipulations are done on the local machine, now we have to configure the remote (server where you will log into).

We’ve got the keys, now we need to allow this type of authentication on SSH server. First we define the type of authentication - Pubkey or Identity, set the following in sshd_config:

# Should we allow Identity (SSH version 1) authentication?
RSAAuthentication yes
  
# Should we allow Pubkey (SSH version 2) authentication?
PubkeyAuthentication yes
 
# Where do we look for authorized public keys?
# If it doesn't start with a slash, then it is
# relative to the user's home directory
AuthorizedKeysFile    .ssh/authorized_keys

The above values allow authentication Identity / Pubkey for SSH protocol version 1 and 2, and also check the availability of a public key to a file $HOME/.ssh/authorized_keys.

Please check availability of these lines in the configuration file /etc/ssh/sshd_config, if there are no such - add and restart the service.

Copy the file with key to the remote host

first variant

ssh-copy-id

You must have the program ssh-copy-id and with her help

ssh-copy-id -i ~/.ssh/id_rsa.pub youruser@remote.server.host

"Manual" option

cat ~/.ssh/id_rsa.pub | ssh-l user@remote.server.host ‘mkdir-p.ssh;touch .ssh/authorized_keys; cat >>.ssh/authorized_keys;chmod 700~/.ssh;chmod 600 ~/.ssh/authorized_keys’

or such

localhost$ scp ~/.ssh/id_rsa.pub youruser@remote.server.host
localhost$ ssh youruser@remote.server.host
remote.server.host$ [ -d ~/.ssh ] || (mkdir ~/.ssh; chmod 700 ~/.ssh)
remote.server.host$ cat ~/id_rsa.pub >> ~/.ssh/authorized_keys
remote.server.host$ chmod 600 ~/.ssh/authorized_keys

All steps are completed, everything is set up - it's time to try

ssh youruser@remote.server.host