kaisawind's blog
  • 关于
  • 所有帖子

root用户登陆sshd失败 - Wed, Feb 23, 2022

root用户登陆sshd失败

root用户登陆sshd失败

提示: Linux发行版更新较快,命令可能因版本不同而有差异。

问题现象

当尝试使用root用户SSH登录Linux服务器时,可能会遇到以下错误:

Permission denied, please try again.
# 或
Received disconnect from 192.168.1.100: 2: Too many authentication failures

原因分析

SSH服务默认禁止root用户登录,这是一项安全措施,但在某些开发或测试环境中可能需要启用root登录。

解决方法

方法1:修改SSH配置

编辑SSH服务器配置文件:

sudo vi /etc/ssh/sshd_config

找到并修改以下参数:

# 允许root登录
PermitRootLogin yes

# 如果使用密钥登录,设置为
# PermitRootLogin prohibit-password

# 启用密码认证
PasswordAuthentication yes

方法2:使用密钥认证(推荐)

  1. 生成SSH密钥对(在本地机器):

    ssh-keygen -t rsa -b 4096
    # 或使用ed25519
    ssh-keygen -t ed25519
    
  2. 复制公钥到服务器:

    ssh-copy-id root@server-ip
    
  3. 配置SSH服务器:

    sudo vi /etc/ssh/sshd_config
    # 设置
    PermitRootLogin prohibit-password
    PubkeyAuthentication yes
    

方法3:重启SSH服务

修改配置后重启SSH服务:

# 检查配置文件语法
sudo sshd -t

# 重启SSH服务
sudo systemctl restart sshd
# 或
sudo systemctl restart ssh

# 查看SSH服务状态
sudo systemctl status sshd

验证配置

# 测试SSH连接
ssh -v root@server-ip

# 查看SSH日志
sudo tail -f /var/log/auth.log  # Ubuntu/Debian
sudo tail -f /var/log/secure    # CentOS/RHEL

安全建议

警告: 允许root登录会降低服务器安全性,请谨慎使用。

  1. 使用密钥认证:避免使用密码登录
  2. 禁用密码认证:PasswordAuthentication no
  3. 使用防火墙限制:只允许特定IP访问SSH
    sudo ufw allow from 192.168.1.0/24 to any port 22
    
  4. 使用fail2ban:防止暴力破解
    sudo apt install fail2ban
    sudo systemctl enable fail2ban
    
  5. 更改默认SSH端口:
    Port 2222  # 修改为非标准端口
    

常见问题

Q: 修改后仍无法登录?

检查:

  • SELinux是否阻止:getenforce
  • 防火墙是否开放SSH端口:sudo ufw status
  • SSH服务是否运行:sudo systemctl status sshd

Q: 如何禁用root登录?

PermitRootLogin no

Q: 如何查看当前SSH配置?

sudo sshd -T | grep permit-root-login


辽ICP备2021007608号 | © 2026 | kaisawind

Facebook Twitter GitHub