在我的系统上,允许 root 用户进行 ssh 客户端身份验证,但我希望仅允许非 root 用户进行 ssh 客户端身份验证。为了以 root 身份禁用 ssh,我将 更改为PermitRootLogin yes
,PermitRootLogin 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 正在尝试什么以及发生了什么的调试消息。