How to Enable SSH on Raspberry Pi {Linux, Mac OS, Windows}

Introduction

To have a full Raspberry Pi experience, you should use Raspbian, the OS developed exclusively for Raspberry Pi. Raspbian is a Debian-based system optimized to utilize Raspberry Pi hardware most efficiently. If you want to transfer data or administer the device remotely via SSH, you need to enable SSH first.

Follow the steps in this guide to learn how to enable SSH on Raspberry Pi without a screen, from the GUI, or using the raspi-config file. We will also show you how to find the IP address of your Raspberry Pi and how to SSH into the device.

tutorial on enabling SSH on Raspberry Pi

Prerequisites

  • Raspberry Pi with Raspbian installed
  • Access to a computer with a microSD or SD card reader (for pre-2014 Raspberry Pi versions)
  • Necessary admin permissions to perform the tasks
  • Access to an SSH client: PuTTy in Windows or Terminal in Linux/macOS

How to Enable SSH on Raspberry Pi

If you installed any of the Raspbian versions from late 2016 onwards, then SSH is disabled by default. The reason behind this decision was to improve security. Since all Raspbian images come with a user “pi” and the default password “raspberry,” it was easy for hackers to use this in their favor.

However, you can easily enable SSH on Raspberry Pi even if you do not have a monitor and keyboard connected. We will explain three possible ways to enable SSH on Raspbian. Read through the guide and choose the method that you prefer.

Enable SSH on Raspberry Pi in Headless Mode

Windows explorer enabling file extensions view menu.

Many users run these devices as a web or media server and configure them via SSH. If you use your Raspberry Pi without a monitor and keyboard, then the only way to enable SSH in headless mode is to use a blank boot file.

Raspberry Pi representation of a headless mode

For this task, you need to create an empty ssh file on another machine. We will use this file on the Raspbian boot SD card to enable SSH. If you do not feel like creating the file yourself, we made the blank ssh boot file available for download.

To enable SSH on Raspberry Pi in headless mode, follow these steps:

1. Make sure you properly installed Raspbian on your Raspberry Pi microSD card. If you have already done so, turn off the device and remove the card.

2. Put the microSD card in the card reader of your computer. Wait until the card mounts. You may need to use a microSD to SD card adapter. All recent Raspberry Pi versions use microSD instead of standard-size SD cards.

3. Navigate to the boot folder. This is the root folder of your SD card. Boot is the default volume name when you install a Raspbian system on an SD card. If you are on a Windows machine, use any file manager, such as Explorer. On macOS or Linux, open a terminal window and type:

cd /Volumes/boot

Note that the name of your SD card can be something other than “boot”. If it is, open the root volume folder and proceed with the next steps.

4. In the boot volume, create a file without an extension and name it ssh.

  • On Windows, right-click anywhere in the boot volume’s white space and select New > Text Document. Delete the .txt extension before you hit Enter. If Windows Explorer on your computer does not show file extensions, click View and enable File name extensions in the menu bar.
touch ssh

5. Safely remove or eject the card from the computer and insert it again in your Raspberry Pi.

6. Boot up Raspberry Pi.

Every time you turn on the Pi board, the device looks for the ssh file. When the device finds the file, then SSH is enabled automatically. If you correctly created an empty ssh file without an extension, you can now SSH into your device.

Enable SSH on Raspberry Pi using GUI Configuration Options

Things get much faster and easier when you have a monitor and peripherals connected to your Raspberry Pi. If you are used to configuring your device using a GUI, follow the steps below.

Once your device boots up:

1. Click the raspberry logo at the top-left corner.

2. Select Preferences > Raspberry Pi Configuration.

Raspberry Pi GUI configuration options menu.

3. Navigate to the Interfaces tab in the configuration window.

4. Enable SSH in the second line.

Raspberry Pi Interface Configuration menu with SSH option enabled.

5. Click OK to save the changes.

That’s it. Your Raspberry Pi is now accessible via SSH. Make sure the device is connected to the internet before trying to establish an SSH session.

Enable SSH on Raspberry Pi in the Terminal

If you are used to configuring your system from the terminal, you can choose one of the two options below.

Enabling SSH with raspi-config

To enable SSH using the raspi-config tool:

1. Open the terminal on your Raspberry Pi and run the tool by typing:

sudo raspi-config

A BIOS-looking raspi-config tool loads.

2. Use the arrows on your keyboard to select Interfacing Options.

The selection menu after you run the raspi-config command. Interfacing Options is selected.

3. Select the P2 SSH option on the list.

SSH option selection after you ran the raspi-config command from your terminal od Raspberry Pi.

4. Select <Yes> on the “Would you like the SSH server to be enabled?” prompt.

5. Hit Enter on the “The SSH server is enabled” confirmation box.

6. Navigate down and select Finish to close the raspi-config.

You can close the terminal window. Your device is now ready to accept SSH connections.

Use systemctl to Enable SSH

The final option to enable SSH on Raspberry Pi is to start the systemctl service from your terminal.

To do so, load the terminal and run these two commands:

sudo systemctl enable ssh
sudo systemctl start ssh

The ssh service is now both enabled and started.

How to SSH Into Raspberry Pi

Find IP Address of Raspberry Pi

Now that you enabled SSH on your Raspberry Pi, you can use SSH to connect from another machine.

Before we can continue, you need to find the IP address of your device. While you are logged in the Raspbian system, open the terminal and run this command:

hostname -l

Alternatively, you can run the ifconfig or ip a command to find the IP address. We prefer using the hostname command as it only displays the address without other network information.

Note: Learn how to set up static IP address for Raspberry Pi.

Use the Terminal in macOS or Linux to Connect to Raspberry Pi

Using SSH to remotely manage a Raspberry Pi device is the same as managing any other Linux-based machine. Both macOS and Linux have SSH clients by default.

To connect via SSH to your Raspberry Pi from the terminal, use this command:

ssh pi@[raspberrypi_ip_address]

Note: Pi is the default user account. If you use another account name, type it in instead of Pi. Use your device’s IP address identified in the previous step.

The first time you connect to your Raspberry Pi, you will get a prompt to accept the RSA key. Type yes, and the new SSH session starts.

Use PuTTy in Windows to Connect to Raspberry Pi

Windows users can SSH into Raspberry Pi using PuTTY.

Start the tool and enter the IP address of your device. Make sure SSH is selected, and the port set to 22.

Windows PuTTY Configuration window with SSH option selected and port 22

Click Open to start a new session. Enter your Raspberry Pi’s account username and password.

Securing Raspberry Pi SSH

In November 2016, SSH was disabled by default on Raspbian. This move was made to prevent Raspberry Pi devices from potentially becoming a part of an IoT botnet.

Now that you have decided to use SSH to connect to your Raspberry Pi, we advise you to change the default account password.

Since all Raspbian installations come with a default account and password, it is easy for hackers to log into your device. To make your device less vulnerable, change Raspberry Pi’s default password.

1. To do so, run the raspi-config tool from the terminal on your device:

sudo raspi-config

2. Select the Change User Password option.

example of raspi-config tool to change Raspberry Pi default account passoword

Follow the instructions to change the password. Your Raspberry Pi is now ready and more secure for SSH access. We recommend you take further steps to improve SSH security.

Note: If you are looking to improve DNS lookup time and connection speed, check out our guide on How To Set Up Raspberry Pi As A DNS Server.

Conclusion

Now you know how to enable SSH on Raspberry Pi. This tutorial has shown you how to enable the service even if you do not have a monitor and keyboard connected to your Raspberry Pi. If you have the peripherals connected, then you can choose the method that suits you best.

Make sure you take a few basic steps to secure your device. If you need a reminder on the most common SSH commands, refer to our Linux SSH commands guide.

Was this article helpful?
YesNo
Goran Jevtic
Goran combines his leadership skills and passion for research, writing, and technology as a Technical Writing Team Lead at phoenixNAP. Working with multiple departments and on various projects, he has developed an extraordinary understanding of cloud and virtualization technology trends and best practices.
Next you should read
How to Install Java on Raspberry Pi
April 25, 2020

This article guides you through the Java installation process on Raspberry Pi. You will also learn how to set...
Read more
How to Install Ubuntu Mate on Raspberry Pi 2 or 3
April 8, 2020

This guide lists all the steps necessary to install Ubuntu MATE on your Raspberry Pi. This includes...
Read more
How to Update Raspberry Pi
March 17, 2020

Update your Raspberry Pi to keep it secure. In this guide, you can also learn how to upgrade from an old to...
Read more
How to Transfer Files with Rsync over SSH
January 31, 2020

Rsync is a Linux tool that allows you to transfer data over SSH to a remote server securely. Use the options...
Read more