要在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 -i或sudo 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 服务器已明确启用密码认证。
通过其他方式访问您的 Ubuntu 服务器:
如果您有其他非 root 用户可以通过 SSH 登录,请使用该用户。
如果您可以访问控制台(例如,通过您的云服务提供商的 Web 控制台或本地的显示器/键盘),请使用该方式。
编辑 SSH 配置文件 (
/etc/ssh/sshd_config):打开终端,执行以下命令:
Bash
sudo nano /etc/ssh/sshd_config查找并修改以下几行:
PermitRootLogin:请确保此行已设置为yes。您之前可能已经设置过了,但请再次确认。PermitRootLogin yesPasswordAuthentication:这一行至关重要。请取消注释(如果前面有#,请删除#)并将其设置为yes。PasswordAuthentication yesKbdInteractiveAuthentication:对于某些系统或配置,启用此项也有助于密码提示,尤其是在涉及 PAM(可插拔认证模块)时。如果您遇到密码问题,通常建议启用此项。KbdInteractiveAuthentication yes
保存文件并退出编辑器。
对于
nano:按Ctrl+X,然后按Y,最后按Enter。对于
vim:按Esc,然后输入:wq并按Enter。
重启 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 -i或sudo su命令切换到 root 用户进行管理操作。
如果您只是为了临时或内部设置而坚持使用 root 密码认证,那么上述步骤应该能解决 "Permission denied (publickey)" 的错误。
评论区