Ubuntu Ssh Server Generate Keys

Posted on by

Cookies are required to use this service. Please enable cookies in your browser. I have an Ubuntu server on Amazon EC2, that I use for development, and today I stupidly cleared everything out of my /.ssh/authorizedkeys file. Luckily I have an SSH open, so I am still connected, and can fix the file, but when I try to put my key file back, it doesn't work. I still get permission denied from the server on my local machine. Apr 12, 2018 SSH, or secure shell, is an encrypted protocol used to administer and communicate with servers. When working with an Ubuntu server, chances are you will spend most of your time in a terminal session connected to your server through SSH. In this guide, we’ll focus on setting up SSH keys for a vanilla Ubuntu 16.04 installation. Cookies are required to use this service. Please enable cookies in your browser. Jul 30, 2015 RSA is the only recommended choice for new keys, so this guide uses 'RSA key' and 'SSH key' interchangeably. Key-based authentication uses two keys, one 'public' key that anyone is allowed to see, and another 'private' key that only the owner is allowed to see.

Related

How to Install and Configure Ansible on Ubuntu 18.04 [Quickstart] Tutorial
How To Set Up and Configure an OpenVPN Server on CentOS 8 Tutorial

What Is SSH?

One essential tool to master as a system administrator is SSH.

SSH, or Secure Shell, is a protocol used to securely log onto remote systems. It is the most common way to access remote Linux and Unix-like servers.

In this guide, we will discuss how to use SSH to connect to a remote system.

Basic Syntax

The tool on Linux for connecting to a remote system using SSH is called, unsurprisingly, ssh.

The most basic form of the command is:

The remote_host in this example is the IP address or domain name that you are trying to connect to.

This command assumes that your username on the remote system is the same as your username on your local system.

If your username is different on the remote system, you can specify it by using this syntax:

Once you have connected to the server, you will probably be asked to verify your identity by providing a password.

Later, we will cover how to generate keys to use instead of passwords.

To exit back into your local session, simply type:

How Does SSH Work?

SSH works by connecting a client program to an ssh server.

In the above commands, ssh is the client program. The ssh server is already running on the remote_host that we specified.

In your Droplet, the sshd server should already be running. If this is not the case, click on the Console Access button from your Droplet page:

You will be presented with a login screen. Log in with your credentials.

The process needed to start an ssh server depends on the distribution of Linux that you are using.

On Ubuntu, you can start the ssh server on the Droplet by typing:

On Ubuntu 16.04 and Debian Jessie, you can use systemctl, the systemd command for managing services:

That should start the sshd server and you can then log in remotely.

How To Configure SSH

When you change the configuration of SSH, you are changing the settings of the sshd server.

In Ubuntu, the main sshd configuration file is located at /etc/ssh/sshd_config.

Back up the current version of this file before editing:

Open it with a text editor:

You will want to leave most of the options in this file alone. However, there are a few you may want to take a look at:

The port declaration specifies which port the sshd server will listen on for connections. By default, this is 22. You should probably leave this setting alone, unless you have specific reasons to do otherwise. If you do change your port, we will show you how to connect to the new port later on.

/etc/ssh/sshd_config

The host keys declarations specify where to look for global host keys. We will discuss what a host key is later.

These two items indicate the level of logging that should occur.

If you are having difficulties with SSH, increasing the amount of logging may be a good way to discover what the issue is.

/etc/ssh/sshd_config

These parameters specify some of the login information.

LoginGraceTime specifies how many seconds to keep the connection alive without successfully logging in.

It may be a good idea to set this time just a little bit higher than the amount of time it takes you to log in normally.

PermitRootLogin selects whether root is allowed to log in.

In most cases, this should be changed to “no” when you have created user account that has access to elevated privileges (through su or sudo) and can log in through ssh.

strictModes is a safety guard that will refuse a login attempt if the authentication files are readable by everyone.

This prevents login attempts when the configuration files are not secure.

These parameters configure an ability called X11 Forwarding. This allows you to view a remote system’s graphical user interface (GUI) on the local system.

This option must be enabled on the server and given with the SSH client during connection with the -X option.

After making your changes, save and close the file by typing CTRL-X and Y, followed by ENTER.

If you changed any settings in /etc/ssh/sshd_config, make sure you restart your sshd server to implement your modifications:

Or, on systemd systems such as Ubuntu 16.04 or Debian Jessie:

You can use the license management functionality in the vSphere Web Client to license multiple assets at a time from a central place. Key

You should thoroughly test your changes to ensure that they operate in the way you expect.

It may be a good idea to have a few sessions active when you are making changes. This will allow you to revert the configuration if necessary.

If you run into problems, remember that you can log in through the Console link on your Droplet page.

How To Log Into SSH with Keys

While it is helpful to be able to log in to a remote system using passwords, it’s a much better idea to set up key-based authentication.

How Does Key-based Authentication Work?

Key-based authentication works by creating a pair of keys: a private key and a public key.

The private key is located on the client machine and is secured and kept secret.

The public key can be given to anyone or placed on any server you wish to access.

When you attempt to connect using a key-pair, the server will use the public key to create a message for the client computer that can only be read with the private key.

The client computer then sends the appropriate response back to the server and the server will know that the client is legitimate.

This entire process is done in the background automatically after you set up keys.

How To Create SSH Keys

SSH keys should be generated on the computer you wish to log in from. This is usually your local computer.

Enter the following into the command line:

Ubuntu Ssh Server Generate Keys For Mac

Press enter to accept the defaults. Your keys will be created at ~/.ssh/id_rsa.pub and ~/.ssh/id_rsa.

Change into the .ssh directory by typing:

Look at the permissions of the files:

As you can see, the id_rsa file is readable and writable only to the owner. This is how it should be to keep it secret.

The id_rsa.pub file, however, can be shared and has permissions appropriate for this activity.

How To Transfer Your Public Key to the Server

You can copy the public key to the remote server by issuing this command:

This will start an SSH session, which you will need to authenticate with your password.

After you enter your password, it will copy your public key to the server’s authorized keys file, which will allow you to log in without the password next time.

Client-Side Options

There are a number of optional flags that you can select when connecting through SSH.

Some of these may be necessary to match the settings in the remote host’s sshd configuration.

For instance, if you changed the port number in your sshd configuration, you will need to match that port on the client-side by typing:

If you only wish to execute a single command on a remote system, you can specify it after the host like so:

You will connect to the remote machine, authenticate, and the command will be executed.

As we said before, if X11 forwarding is enabled on both computers, you can access that functionality by typing:

Providing you have the appropriate tools on your computer, GUI programs that you use on the remote system will now open their window on your local system.

Disabling Password Authentication

If you have created SSH keys, you can enhance your server’s security by disabling password-only authentication. Apart from the console, the only way to log into your server will be through the private key that pairs with the public key you have installed on the server.

Note: Before you proceed with this step, be sure you have installed a public key to your server. Otherwise, you will be locked out!

As root or a non-root user with sudo privileges, open the sshd configuration file:

Locate the line that reads Password Authentication, and uncomment it by removing the leading #. You can then change its value to “no”:

sshd_config — Disable password authentication

Two more settings that should not need to be modified (provided you have not modified this file before) are PubkeyAuthentication and ChallengeResponseAuthentication. They are set by default, and should read as follows:

Wiki

After making your changes, save and close the file.

You can now reload the SSH daemon:

Password authentication should now be disabled, and your server should be accessible only through SSH key authentication.

Conclusion

Learning your way around SSH is a worthwhile pursuit, if only because it is such a common activity.

As you utilize the various options, you will discover more advanced functionality that can make your life easier. SSH has remained popular because it is secure, light-weight, and useful in diverse situations.

I am a new Ubuntu 18.04 LTS user and I would like to setup ssh public key authentication. How do I set up ssh keys based authentication on Ubuntu Linux 18.04 LTS server? How do I set up SSH keys on an Ubuntu Linux 18.04 LTS server? In Ubuntu 18.04 LTS, how do I set up public key authentication?

Ubuntu Ssh Server Generate Keys Free


Introduction: OpenSSH is a free and open source client/server technology for secure remote login. It is an implementation of the SSH protocol. OpenSSH divided into sshd (server) and various client tools such as sftp, scp, ssh and more. One can do remote login with OpenSSH either using password or combination of private and public keys named as public key based authentication. It is an alternative security method for user passwords. This method is recommended on a VPS, cloud, dedicated or even home-based server or laptop. This page shows how to set up SSH keys on Ubuntu 18.04 LTS server.
Advertisements

Ubuntu 18.04 Setup SSH Public Key Authentication

The procedure to set up secure ssh keys on Ubuntu 18.04:

  1. Create the key pair using ssh-keygen command.
  2. Copy and install the public key using ssh-copy-id command.
  3. Add yourself to sudo admin account on Ubuntu 18.04 server.
  4. Disable the password login for root account on Ubuntu 18.04.

Sample set up for SSH Keys on Ubuntu 18.04


Where,

  • 202.54.1.55 – You store your public key on the remote hosts and you have an accounts on this Ubuntu Linux 18.04 LTS server.
  • Linux/macbook laptop – Your private key stays on the desktop/laptop/computer (or local server) you use to connect to 202.54.1.55 server. Do not share or give your private file to anyone.

In public key based method you can log into remote hosts and server, and transfer files to them, without using your account passwords. Feel free to replace 202.54.1.55 and client names with your actual setup. Enough talk, let’s set up public key authentication on Ubuntu Linux 18.04 LTS.

How to create the RSA/ed25519 key pair on your local desktop/laptop

Open the Terminal and type following commands if .ssh directory does not exists:
$ mkdir -p $HOME/.ssh
$ chmod 0700 $HOME/.ssh

Next generate a key pair for the protocol, run:
$ ssh-keygen
OR
$ ssh-keygen -t rsa 4096 -C 'My key for Linode server'
These days ED25519 keys are favored over RSA keys when backward compatibility is not needed:
$ ssh-keygen -t ed25519 -C 'My key for Linux server # 42'

How to install the public key in Ubuntu 18.04 remote server

The syntax is as follows:
ssh-copy-id your-user-name@your-ubuntu-server-name
ssh-copy-id -i ~/.ssh/file.pub your-user-name@your-ubuntu-server-name

For example:
## for RSA KEY ##
ssh-copy-id -i $HOME/.ssh/id_rsa.pub user@202.54.1.55
## for ED25519 KEY ##
ssh-copy-id -i $HOME/.ssh/id_ed25519.pub user@202.54.1.55
## install SSH KEY for root user ##
ssh-copy-id -i $HOME/.ssh/id_ed25519.pub root@202.54.1.55

I am going to install ssh key for a user named vivek (type command on your laptop/desktop where you generated RSA/ed25519 keys):
$ ssh-copy-id -i ~/.ssh/id_ed25519.pub vivek@202.54.1.55

Test it

Now try logging into the Ubuntu 18.04 LTS server, with ssh command from your client computer/laptop using ssh keys:
$ ssh your-user@your-server-name-here
$ ssh vivek@202.54.1.55

What are ssh-agent and ssh-add, and how do I use them on Ubuntu 18.04?

To get rid of a passphrase for the current session, add a passphrase to ssh-agent (see ssh-agent command for more info) and you will not be prompted for it when using ssh or scp/sftp/rsync to connect to hosts with your public key. The syntax is as follows:
$ eval $(ssh-agent)
Type the ssh-add command to prompt the user for a private key passphrase and adds it to the list maintained by ssh-agent command:
$ ssh-add
Enter your private key passphrase. Now try again to log into vivek@202.54.1.55 and you will NOT be prompted for a password:
$ ssh vivek@202.54.1.55

How to disable the password based login on a Ubuntu 18.04 server

Login to your server, type:
## client commands ##
$ eval $(ssh-agent)
$ ssh-add
$ ssh vivek@202.54.1.55

Now login as root user:
$ sudo -i
OR
$ su -i
Edit sshd_config file:
# vim /etc/ssh/sshd_config
OR
# nano /etc/ssh/sshd_config
Find PermitRootLogin and set it as follows:
PermitRootLogin no
Save and close the file. I am going to add a user named vivek to sudoers group on Ubuntu 18.04 server so that we can run sysadmin tasks:
# adduser vivek sudo
Restart/reload the sshd service:
# systemctl reload ssh
You can exit from all session and test it as follows:
$ ssh vivek@202.54.1.55
## become root on server for sysadmin task ##
$ sudo -i

How do I add or replace a passphrase for an existing private key?

To to change your SSH passphrase type the following command:
$ ssh-keygen -p

How do I backup my existing private/public SSH keys

Just copy files to your backup server or external USB pen/hard drive:

How do I protect my ssh keys?

  1. Always use a strong passphrase.
  2. Do not share your private keys anywhere online or store in insecure cloud storage or gitlab/github servers.
  3. Restrict privileges of the account.

Tip: Create and setup an OpenSSH config file to create shortcuts for servers

See how to create and use an OpenSSH ssh_config file for more info.

How do I secure my OpenSSH server?

See “OpenSSH Server Best Security Practices” for more info.

Conclusion

You learned how to create and install ssh keys for SSH key-based authentication for Ubuntu Linux 18.04 LTS server. See OpenSSH server documents here and here for more info.

ADVERTISEMENTS