侧边栏壁纸
博主头像
龍騰博客 博主等级

行动起来,活在当下

  • 累计撰写 101 篇文章
  • 累计创建 28 个标签
  • 累计收到 7 条评论

目 录CONTENT

文章目录

Ubuntu 25.04上允许FinalShell使用root用户登录

管理员
2025-06-10 / 0 评论 / 0 点赞 / 6 阅读 / 0 字

要在Ubuntu 25.04上允许FinalShell使用root用户登录,你需要完成以下几个步骤:

1. 启用root用户并设置密码:

Ubuntu默认不为root用户设置密码,也不允许直接root登录。你需要先给root用户设置一个密码。

打开终端,执行以下命令:

Bash

sudo passwd root

系统会提示你输入当前用户的密码,然后让你为root用户设置并确认新密码。请设置一个强密码。

2. 修改SSH配置文件:

SSH服务默认不允许root用户通过密码登录。你需要修改SSH服务的配置文件/etc/ssh/sshd_config来允许root登录。

打开终端,使用文本编辑器(例如nano或vim)编辑该文件:

Bash

sudo nano /etc/ssh/sshd_config

Bash

sudo vim /etc/ssh/sshd_config

找到以下这行(可能会被注释掉,即前面有#):

#PermitRootLogin prohibit-password

#PermitRootLogin without-password

将其修改为:

PermitRootLogin yes

确保移除行首的#

3. 重启SSH服务:

修改配置文件后,你需要重启SSH服务使更改生效。

Bash

sudo systemctl restart sshd

4. 使用FinalShell连接:

现在你可以打开FinalShell,创建一个新的连接,并使用以下信息进行连接:

  • 主机: 你的Ubuntu服务器的IP地址

  • 端口: 22 (默认SSH端口)

  • 用户名: root

  • 密码: 你之前为root用户设置的密码

安全警告:

直接允许root用户通过密码登录SSH存在一定的安全风险,因为root用户拥有系统最高权限。如果你的服务器暴露在公网,强烈建议采取以下安全措施:

  • 使用SSH密钥认证: 这是更安全的做法。你可以生成SSH密钥对,并将公钥上传到服务器,然后禁用密码登录。这样,只有拥有私钥才能登录。

  • 限制root登录IP:sshd_config中,你可以限制root登录的IP地址范围。

  • 使用非root用户登录,然后切换到root: 更推荐的做法是创建一个普通用户,通过SSH登录,然后使用sudo -isudo su命令切换到root用户进行管理操作。

在生产环境中,尽量避免直接root密码登录。

您收到的错误信息 "Permission denied (publickey)" 表示 SSH 客户端(FinalShell)尝试使用公钥进行身份验证,但服务器拒绝了。即使您打算使用密码登录,也可能出现这种情况。


错误原因分析

当您看到 "Permission denied (publickey)" 时,通常意味着以下几点:

  • SSH 客户端的默认偏好: 您的 FinalShell(或底层 SSH 客户端)可能默认会优先尝试公钥认证,因为它是一种更安全、更常用的方法。

  • 服务器上没有匹配的公钥: 即使您已将 PermitRootLogin yes 设置为允许 root 登录,但如果服务器上的 /root/.ssh/authorized_keys 文件中没有与 FinalShell 所持有的私钥相匹配的公钥,公钥认证就会失败。

  • PasswordAuthentication no(或被注释掉): 导致您在打算使用密码登录时出现此错误的最常见原因是,服务器上的 SSH 配置中仍然禁用了密码认证。


解决方案(使用密码认证登录 root)

要解决此问题并使用密码认证登录 root,您需要确保您的 SSH 服务器已明确启用密码认证

  1. 通过其他方式访问您的 Ubuntu 服务器:

    • 如果您有其他非 root 用户可以通过 SSH 登录,请使用该用户。

    • 如果您可以访问控制台(例如,通过您的云服务提供商的 Web 控制台或本地的显示器/键盘),请使用该方式。

  2. 编辑 SSH 配置文件 (/etc/ssh/sshd_config):

    打开终端,执行以下命令:

    Bash

    sudo nano /etc/ssh/sshd_config
    
  3. 查找并修改以下几行:

    • PermitRootLogin:请确保此行已设置为 yes。您之前可能已经设置过了,但请再次确认。

      PermitRootLogin yes
      
    • PasswordAuthentication这一行至关重要。请取消注释(如果前面有 #,请删除 #)并将其设置为 yes

      PasswordAuthentication yes
      
    • KbdInteractiveAuthentication:对于某些系统或配置,启用此项也有助于密码提示,尤其是在涉及 PAM(可插拔认证模块)时。如果您遇到密码问题,通常建议启用此项。

      KbdInteractiveAuthentication yes
      
  4. 保存文件并退出编辑器。

    • 对于 nano:按 Ctrl+X,然后按 Y,最后按 Enter

    • 对于 vim:按 Esc,然后输入 :wq 并按 Enter

  5. 重启 SSH 服务:

    Bash

    sudo systemctl restart sshd.service
    

    (请注意:sshd 是 SSH 守护进程的名称,ssh 是客户端。在这里使用 sshd 更准确。)


完成这些步骤后,请再次尝试使用 FinalShell 连接,并使用 root 作为用户名和您为 root 用户设置的密码进行登录。


重要安全提示

如前所述,直接允许 root 用户使用密码通过 SSH 登录通常不建议,尤其是在可公开访问的服务器上,因为 root 用户拥有最高权限。如果这是生产环境,请考虑以下更安全的替代方案:

  • SSH 密钥认证(推荐):

    • 在您的本地机器上生成 SSH 密钥对(FinalShell 支持此功能)。

    • 将公钥复制到 Ubuntu 服务器上的 /root/.ssh/authorized_keys 文件中。

    • sshd_config 中,您可以将 PermitRootLogin 设置为 without-password,这将只允许通过密钥登录 root,并禁用 root 的密码认证。

    • 确保服务器上 ~/.ssh 目录的权限为 700~/.ssh/authorized_keys 文件的权限为 600

  • 以普通用户身份登录,然后切换到 root: 这是一种常见且更安全的做法。您可以创建一个非 root 用户(具有 sudo 权限),通过 SSH 登录该用户,然后使用 sudo -isudo su 命令切换到 root 用户进行管理操作。

如果您只是为了临时或内部设置而坚持使用 root 密码认证,那么上述步骤应该能解决 "Permission denied (publickey)" 的错误。

0

评论区