The public-key authentication method requires you to copy your public SSH key to the server's authorized_keys file. Your public key could be copied manually or by using tools such as ssh-copy-id. You could also use some SSH tricks to copy your SSH key to the server.

The authorized_keys file is in the server's ~/.ssh/ directory of the user you are connecting. Copying your public key to the file will allow you to log in to the server using the public-key authentication method, enabling passwordless SSH login. If your key pair is not protected by a passphrase, it could further be used to perform some automation tasks that include remotely executing commands via a script.

Steps to copy SSH public key to remote server using ssh-copy-id:

  1. Launch terminal.
  2. Locate your public SSH key.

     $ ls ~/.ssh/id* /home/user/.ssh/id_rsa           /home/user/.ssh/id_rsa.pub

    The public key is normally the one with the .pub extension.

  3. Add your SSH public key to remote server user's authorized_keys file using ssh-copy-id command.

    $ ssh-copy-id user@remote-host The authenticity of host 'remote-host (192.168.111.135)' can't be established. ECDSA key fingerprint is SHA256:hXGpY0ALjXvDUDF1cDs2N8WRO9SuJZ/lfq+9q99BPV0. Are you sure you want to continue connecting (yes/no)? yes /usr/bin/ssh-copy-id: INFO: attempting to log in with the new key(s), to filter out any that are already installed /usr/bin/ssh-copy-id: INFO: 2 key(s) remain to be installed -- if you are prompted now it is to install the new keys user@remote-host's password:  Number of key(s) added: 2  Now try logging into the machine, with:   "ssh 'user@remote-host'" and check to make sure that only the key(s) you wanted were added.

    If you want to use other public key rather that then one in the default location, use the -i option as the following

    $ ssh-copy-id -i ~/.ssh/other_key.pub user@remote-host

  4. Try to log in using key to test.

    $ ssh -i .ssh/id_rsa user@remote-host Welcome to Ubuntu 19.04 (GNU/Linux 5.0.0-20-generic x86_64)   * Documentation:  https://help.ubuntu.com  * Management:     https://landscape.canonical.com  * Support:        https://ubuntu.com/advantage    System information as of Sat Jun 29 11:31:23 UTC 2019    System load:  0.16               Processes:            211   Usage of /:   25.8% of 19.56GB   Users logged in:      1   Memory usage: 13%                IP address for ens33: 192.168.111.135   Swap usage:   0%   * MicroK8s 1.15 is out! It has already been installed on more    than 14 different distros. Guess which ones?       https://snapcraft.io/microk8s  0 updates can be installed immediately. 0 of these updates are security updates.   Last login: Sat Jun 29 11:08:20 2019 from 192.168.111.1

Alternative methods:

  • Manually append your public key to the remote ssh server's key to authorized_keys file. For example, copy the content of your ~/.ssh/id_rsa.pub to the server's ~/.ssh/authorized_keys file.
  • Using the following command combination

    $ cat ~/.ssh/id_rsa.pub | ssh user@remote-host 'cat >> ~/.ssh/authorized_keys' 

Guide compatibility:

Operating System
Ubuntu Linux
Debian Linux
Red Hat Enterprise Linux
Fedora Linux
CentOS Linux
openSUSE Linux
SUSE Linux Enterprise Server
FreeBSD
OpenBSD
NetBSD
macOS