5 Easy Steps to Create a New SSH User in Ubuntu: A Comprehensive Guide

You’re comfortably seated in your home office, sipping a warm cup of coffee while working on an important project. Suddenly, you realize the need to provide access to your Ubuntu server for a team member. You’ve heard of Secure Shell (SSH), but you’re not quite sure how to create an SSH user in Ubuntu. Don’t worry; setting up a new user is simple and straightforward.

In this article, we will explore the process of creating an SSH user in Ubuntu by discussing various methods, techniques, and tips to ensure optimal security and performance. By the end of this article, you’ll be well-equipped with the knowledge needed to create an SSH user in Ubuntu efficiently and securely.

Understanding SSH and Its Importance

Before delving into the process of creating an SSH user in Ubuntu, let’s spare a moment to discuss the concept of SSH itself. SSH, or Secure Shell, is a cryptographic network protocol that offers a secure way to access a remote computer over an unsecured network. It is widely used for managing systems, applications, and file transfers.

As a developer or system administrator, ensuring that your server is secure should always be a priority. SSH does just that, providing an encrypted channel between two devices to secure communication and helping prevent data breaches and unauthorized access.

Note: This article assumes that you have a working Ubuntu system with SSH installed and running. If not, please consult the official Ubuntu documentation for installation and initial setup instructions.

Creating a New User Account

To create an SSH user in Ubuntu, the first step is to create a new user account on your system. Follow these steps:

1. Open a terminal window either by right-clicking on the desktop and choosing “Open Terminal” or by pressing Ctrl + Alt + T.

2. Run the following command to create a new user:

“`bash
sudo adduser new_username
“`

Replace “new_username” with the desired username for the account. You’ll be prompted to enter your password as you’re using sudo.

3. Provide a new password for the user and then re-enter it when prompted.

4. You can also add optional details such as the user’s full name, office phone number, home phone number, and office room number. Press Enter to leave these fields blank or after typing each detail.

5. Finally, confirm that the information is correct by typing “Y” and pressing Enter.

You’ve now successfully created a new user account on your Ubuntu system.

Granting Sudo Access to the New User

In some cases, you might want to grant your new user sudo privileges, allowing them to run system commands that require administrative permissions. To do so, follow these steps:

1. Run the following command to add the new user to the sudo group:

“`bash
sudo usermod -aG sudo new_username
“`

Replace “new_username” with the actual username of the account you just created.

2. Test the sudo access by switching to the new user account using the command:

“`bash
su – new_username
“`

3. Now, try running a command with sudo, such as updating the package list:

“`bash
sudo apt update
“`

If you’re prompted for a password and the command executes successfully, you’ve successfully granted sudo access to the new user.

Setting Up SSH Access for the New User

After creating a new user account and optionally granting sudo access, it’s time to set up SSH access for them. This process involves creating an authorized_keys file in the new user’s home directory.

On the New User’s Local Machine:

1. Open a terminal and run the following command to generate a new SSH key pair:

“`bash
ssh-keygen -t rsa -b 4096
“`

2. You can accept the default file location or provide a custom path when prompted. Additionally, you may choose to protect the private key with a passphrase for added security.

3. Once the key pair is generated, the public key needs to be copied to the remote server. Run this command:

“`bash
ssh-copy-id new_username@remote_server_ip
“`

Replace “new_username” with the actual username and “remote_server_ip” with the IP address of your Ubuntu server.

On the Remote Ubuntu Server:

1. Switch to the new user with the command:

“`bash
su – new_username
“`

2. Verify that the public key has been copied to the “authorized_keys” file in the user’s home directory by running:

“`bash
cat ~/.ssh/authorized_keys
“`

If you see the public key displayed, you’ve successfully set up SSH access for the new user.

Ensuring SSH Security

Now that you’ve created an SSH user in Ubuntu, it’s crucial to ensure optimal security. A few recommended practices include:

– Regularly updating your SSH software for security patches.
– Configuring the SSH daemon to listen on a non-default port.
– Limiting access to only specific IP addresses.
– Disabling password authentication and relying solely on key-based authentication.
– Regularly rotating SSH keys and passphrases.
– Implementing two-factor authentication (2FA) where possible.

By following these guidelines, you’ll be well on your way to maintaining a secure server environment.

Conclusion

Creating an SSH user in Ubuntu is a relatively simple process that involves creating a new user account, granting sudo access (if desired), and setting up SSH access by generating an SSH key pair. With the provided steps and security recommendations, you’ll be able to create and manage SSH users confidently on your Ubuntu server.

How to Remote Admin using SSH on Windows and Linux Server

YouTube video

How to Create a New User on Ubuntu 22.04

YouTube video

Learn Linux SSH Basics – How to Connect to a Server | Linux SSH Tutorial Part-1

YouTube video

What are the steps to create a SSH user in Ubuntu and grant them necessary permissions?

To create a new SSH user in Ubuntu and grant them necessary permissions, follow these steps:

1. Open terminal: Press `Ctrl` + `Alt` + `T` to open a terminal window.

2. Create a new user: Use the `adduser` command followed by the desired username. For example, to create a user named “newuser”, type:
“`
sudo adduser newuser
“`

3. Set user password: Follow the prompts to set a strong and secure password for this new user account.

4. Add the user to the sudo group: To give the user administrative privileges, add them to the “sudo” group using the `usermod` command. For example:
“`
sudo usermod -aG sudo newuser
“`

5. Edit the SSH config file: By default, OpenSSH allows password-based login for all users. If you would like to disable password authentication for your new user and use SSH keys instead, edit the SSH config file located at `/etc/ssh/sshd_config` using a text editor, such as nano:
“`
sudo nano /etc/ssh/sshd_config
“`

6. Disable password authentication: Find the line that says “PasswordAuthentication” and change its value to “no” like this:
“`
PasswordAuthentication no
“`

7. Save and close the file: Press `Ctrl` + `X`, then `Y` and `Enter` to save and exit the file.

8. Restart the SSH service: Apply changes to the SSH configuration by restarting the ssh service:
“`
sudo systemctl restart ssh
“`

9. Generate SSH key pair: On your local machine, generate an SSH key pair by running:
“`
ssh-keygen -t rsa -b 4096
“`

10. Copy the public key to the server: Use the `ssh-copy-id` command to securely copy your public key to the remote server. Replace “newuser” with the username you created and “your_server_address” with the IP address or domain of your server:
“`
ssh-copy-id newuser@your_server_address
“`

11. Test the SSH connection: Try logging in to the server using the new user with the following command:
“`
ssh newuser@your_server_address
“`

If everything was set up correctly, you should now be logged into your Ubuntu server as the new user, and they will have the necessary permissions for secure shell access.

How can you configure the SSH server to allow specific users to connect in Ubuntu?

To configure the SSH server to allow specific users to connect in Ubuntu, follow these steps:

1. First, ensure that the OpenSSH server is installed on your system. If not, you can install it using the following command:

“`
sudo apt-get update
sudo apt-get install openssh-server
“`

2. Open the main SSH configuration file by running:

“`
sudo nano /etc/ssh/sshd_config
“`

3. Locate the line containing `#AllowUsers`, which might be commented out by default. Uncomment the line by removing the ‘#’ symbol at the beginning of the line. Now, you can specify the list of allowed users, separating them with a space, like so:

“`
AllowUsers user1 user2 user3
“`

Replace ‘user1’, ‘user2’, and ‘user3’ with the actual usernames you want to grant access to.

4. Save and close the configuration file by pressing `Ctrl + X`, followed by `Y` and `Enter`.

5. Restart the SSH service to apply the changes, using the following command:

“`
sudo systemctl restart ssh
“`

Now, only the specified users will be allowed to connect to the server via SSH.

What security measures should be implemented when creating a SSH user in Ubuntu?

When creating an SSH user in Ubuntu, it’s essential to implement various security measures to ensure your server’s safety. Here are some key steps you should follow:

1. Update your system: Always keep your Ubuntu server up-to-date with security patches and package upgrades to minimize the risk of vulnerabilities.

2. Create a new user: Avoid using the default root user for SSH access. Instead, create a new user with limited privileges, making it harder for attackers to gain control of your system.

3. Disable password authentication: Passwords can be cracked or brute-forced, so it’s safer to utilize public-key authentication for SSH logins. This requires users to have a private key to access the server.

4. Change the default SSH port: The default SSH port is 22, which is commonly targeted by attackers. Change it to a non-standard port to reduce the likelihood of unauthorized access attempts.

5. Limit user access: Configure SSH to allow only specific users or groups, further limiting potential attack vectors.

6. Enable a firewall: Use a firewall like UFW (Uncomplicated Firewall) to restrict incoming and outgoing connections, allowing only necessary traffic to pass through.

7. Monitor SSH activity: Regularly monitor your SSH logs found in /var/log/auth.log for any suspicious activity or login attempts. You can use tools like Logwatch or Fail2Ban for this purpose.

8. Use Two-Factor Authentication (2FA): Add an extra layer of security by enabling 2FA, which requires users to provide two forms of identification before being granted access.

9. Disable X11 Forwarding: If not needed, disable X11 forwarding in the SSH configuration file (/etc/ssh/sshd_config) to prevent attackers from launching GUI applications on your system.

10. Limit SSH access time: Configure the server to allow SSH access only during specific hours, reducing the window of opportunity for potential attacks.

By implementing these security measures, you can significantly reduce the risk of unauthorized access to your Ubuntu server and safeguard your SSH environment.

How can you set up key-based authentication while creating a SSH user in Ubuntu?

To set up key-based authentication while creating an SSH user in Ubuntu, follow these steps:

1. Create a new user on the server by running the following command:
“`
sudo adduser new_user_name
“`

2. Add the new user to the sudo group to grant administrator privileges (optional):
“`
sudo usermod -aG sudo new_user_name
“`

3. Switch to the new user account using the ‘su’ command:
“`
su – new_user_name
“`

4. Generate an SSH key pair on the local machine (if you haven’t already) by running this command:
“`
ssh-keygen
“`
This will create a private key (id_rsa) and a public key (id_rsa.pub) in the `.ssh` directory within your home folder.

5. Copy the public key to the server’s ‘.ssh’ directory for the new user:
– Create the ‘.ssh’ directory and set appropriate permissions:
“`
mkdir ~/.ssh
chmod 700 ~/.ssh
“`
– On the local machine, copy the contents of the ‘id_rsa.pub’ file or run the following command to copy the key to the server:
“`
ssh-copy-id -i ~/.ssh/id_rsa.pub new_user_name@server_ip_address
“`

6. Configure the server to use key-based authentication:
– Edit the ‘sshd_config’ file on the server:
“`
sudo nano /etc/ssh/sshd_config
“`
– Ensure that these lines are uncommented and have the following values:
“`
PubkeyAuthentication yes
AuthorizedKeysFile .ssh/authorized_keys
PasswordAuthentication no
“`

7. Restart the SSH service on the server for the changes to take effect:
“`
sudo systemctl restart ssh
“`

Now, the new user will be able to authenticate using the generated SSH key pair, and password-based authentication will be disabled. Remember to keep the private key (id_rsa) secure on your local machine, as it is required for logging in as the new user.

Are there any tools or scripts available to automate the process of creating a SSH user in Ubuntu?

Yes, there are several tools and scripts available to automate the process of creating an SSH user in Ubuntu. One such tool is Ansible, which is an open-source automation tool that can help you with configuration management, application deployment, and task automation.

To use Ansible for creating an SSH user, you will first need to install it on your system. You can do this by running the following command:

“`
sudo apt install ansible -y
“`

Once Ansible is installed, you can create a playbook to automate the task of adding an SSH user. A playbook is a simple YAML file that contains a list of tasks for Ansible to execute. Here’s a basic example of a playbook to create an SSH user:

“`yaml

– hosts: localhost
become: yes
tasks:
– name: Create SSH user
user:
name: new_ssh_user
generate_ssh_key: yes
ssh_key_bits: 2048
“`

In this example, replace “new_ssh_user” with the desired username for the new SSH user. Save the file with a “.yml” extension (e.g., “create_ssh_user.yml”).

Next, run the Ansible playbook using the following command:

“`
ansible-playbook create_ssh_user.yml
“`

Ansible will then execute the tasks defined in the playbook, which will create the new SSH user and generate an SSH key pair for them.

In summary, using Ansible can help you automate the process of creating an SSH user in Ubuntu. Additionally, you can use other automation tools such as Puppet, Chef, or even custom bash scripts if you prefer.