Direct root access over SSH is disabled by default in most modern Linux distributions. This restriction isn’t arbitrary—it follows best security practices. However, there are legitimate scenarios where enabling root login can be practical: automation, isolated environments, system recovery, or local infrastructure tasks.

This article walks you through how to enable root SSH login in Ubuntu, Debian, and CentOS, outlining the differences and offering key security recommendations.


Why Is Root SSH Access Disabled?

The root user has full control of the system. Allowing direct remote access via SSH increases the risk of:

  • Automated brute-force attacks
  • Immediate privilege escalation if compromised
  • Lack of traceability (no individual user tracking)

Best practice is to disable direct root login and use sudo with regular users. If you choose to enable it, proceed with caution.


Ubuntu and Debian: Enable Root SSH Access

Ubuntu and Debian are very similar in structure, so the steps are nearly identical.

Step 1: Enable the Root Account (Ubuntu only)

Ubuntu doesn’t activate the root account by default (no password is set).

sudo passwd root

This assigns a password to the root user.

On Debian, this step may be unnecessary if you set a root password during installation.


Step 2: Configure the SSH Daemon

Edit the SSH configuration file:

sudo nano /etc/ssh/sshd_config

Find and modify or add the following lines:

PermitRootLogin yes
PasswordAuthentication yes

For more secure key-based access:

PermitRootLogin prohibit-password
PasswordAuthentication no

Save and restart the SSH service:

sudo systemctl restart ssh

You can now log in with:

ssh root@your-server-ip

CentOS / AlmaLinux / RHEL: Slightly Different Process

CentOS (7/8) and derivatives like AlmaLinux or Rocky Linux typically have the root account enabled, but SSH access may still be restricted.

Step 1: Ensure Root Has a Password

As root or via sudo:

passwd root

Step 2: Update SSH Settings

Edit /etc/ssh/sshd_config:

PermitRootLogin yes
PasswordAuthentication yes

Restart the SSH service:

sudo systemctl restart sshd

(Optional) Use SSH Keys for Enhanced Security

Using SSH keys is safer than passwords. To set it up:

  1. Generate a key pair on your local machine: ssh-keygen -t rsa -b 4096
  2. Copy the public key to your server: ssh-copy-id root@your-server-ip
  3. Confirm that /root/.ssh/authorized_keys contains your key.
  4. Edit /etc/ssh/sshd_config: PermitRootLogin prohibit-password PasswordAuthentication no

Security Recommendations

If you enable root SSH access, mitigate risks:

  • Limit access by IP: Use iptables, firewalld, or cloud firewall rules to restrict incoming connections.
  • Change the default SSH port (22) to something less obvious.
  • Install Fail2ban to block repeated brute-force attempts: sudo apt install fail2ban # Ubuntu/Debian sudo yum install fail2ban # CentOS
  • Disable root login once critical tasks are complete.

Final Thoughts

Enabling SSH root login is a powerful but risky option. Ubuntu, Debian, and CentOS support it with similar steps, but it’s best used in temporary or secured contexts. For general usage, stick with sudo, SSH keys, and audit logs.

Tools like logwatch, journalctl, or centralized logging systems can help monitor access and reinforce accountability.

Scroll to Top