以非 root 用户身份进行 SSH 客户端身份验证

以非 root 用户身份进行 SSH 客户端身份验证

在我的系统上,允许 root 用户进行 ssh 客户端身份验证,但我希望仅允许非 root 用户进行 ssh 客户端身份验证。为了以 root 身份禁用 ssh,我将 更改为PermitRootLogin yesPermitRootLogin no但现在我无法 ssh 到我的平台。

谁能告诉我如何仅为非 root 用户启用 ssh 客户端身份验证?

答案1

ssh 服务器的配置是在 /etc/ssh/sshd_config 文件中完成的。您应该打开此文件并检查以下内容:

1) 有以下指示吗?

AllowUsers ...
AllowGroups ...
DenyUsers ...
DenyGroups ...

如果是这样,您将必须更改它以允许您以自己的身份进行连接。

2) 是否有说明:

PasswordAuthentication no

如果存在,则意味着 ssh 身份验证只能通过加密密钥进行。由于您显然没有,这实际上会阻止您通过 ssh 进入系统。

将此更改为

PasswordAuthentication yes

这样您就可以测试这是否是您问题的完整解决方案。一旦您确信 ssh 也适合您,请为自己建立一个加密密钥,然后再次关闭 PasswordAuthentication。网上有许多关于如何使用密钥而不是密码进行身份验证的有用指南。做吧。您的安全性将大大提高。

要完成此测试,您必须重新启动 SSH 服务器,否则 /etc/ssh/sshd_config 中引入的更改将不会生效。这样做取决于您的系统:

 sudo service ssh restart

或 sudo systemctl daemon-reload sudo systemctl restart sshd

(第一个适用于 Debian 及其衍生版本,第二个适用于 Arch Linux、Fedora 和一般的 systemd 系统)。

3.) 有没有说明

PermitRootLogin no

当您尝试以 root 身份登录时?如果是,请将上面的“否”更改为“是”。

如果这仍然不能解决问题,您将必须提供调试详细信息,可以通过在客户端计算机上发出来获取该详细信息

ssh me@my_pc -vv

它输出大量数据,对此任务有用。服务器上有一个等效的(出于明显的安全原因,信息更丰富)选项:您需要首先停止服务,

 sudo service ssh stop
 sudo systemctl stop sshd

然后重新启动它

 sudo /usr/sbin/sshd -Dd
 sudo /usr/bin/sshd -Dd

再次针对两种类型的系统(我不确定除 Arch 之外的 systemd 发行版,也许第一种形式适用于除 Arch 之外的所有系统)。

这将生成调试所需的信息。

答案2

不确定您使用的是哪种 Linux/Unix。我经常使用Ubuntu,它是这样的:

默认允许普通用户通过SSH登录。您可以通过以下方式登录

ssh -l myuser myhost

或通过

ssh myuser@myhost

你有尝试过这样吗?如果是的话,我可以想到以下常见的失败原因:

  • 根据您的 Linux / Unix,可能需要将用户添加到特定组(例如 ssh)以允许他登录。
  • 您还应该检查是否允许使用密码或仅使用公钥登录(在这种情况下,您可能需要生成密钥或在登录时指定它)。
  • 您可能限制登录某些 IP,而正在使用另一个 IP。

要进行调试,请尝试-vvv在尝试使用 ssh 登录时使用,因为这会为您提供大量有关 SSH 正在尝试什么以及发生了什么的调试消息。

相关内容