上一篇 下一篇 分享链接 返回 返回顶部

如何在Linux服务器中禁用SSH登录到特定用户

发布人:Minchunlin 发布时间:2021-03-10 09:27 阅读量:1721

大家可能已经知道,SSH(Secure Shell)是一种远程安全访问计算机的网络协议。因此,Linux中的服务器和客户端软件分别称为SSH服务器和SSH客户端,并有很多实现方式。

默认情况下,SSH允许你登录计算机的任何用户,只要你有该用户的密码。然而,这也带来了任何使用基于密码的认证软件都会面临的问题:攻击者被邀请利用并获得管理员访问权限。

今天,我们将看到如何禁用SSH登录到特定用户,更重要的是,禁用到根用户。

1、禁用SSH访问用户

你可以使用SSH与任何用户登录系统,使用以下语法。

$ ssh tempuser@localhost

现在,我的服务器上允许所有用户访问SSH。现在让我们拒绝一个叫'tempuser'的用户访问。

在任何文本编辑器中打开文件'/etc/ssh/sshd_config'。

$ sudo vim /etc/ssh/sshd_config

在文件末尾添加以下一行:

DenyUsers tempuser

重要:在'DenyUsers'和'tempuser'之间有一个'Tab',而不是空格。如果你加了一个空格,它就不会识别这个指令。

保存并退出该文件。

用下面的命令重新启动SSH服务器。

$ sudo systemctl restart ssh

如果你使用的系统没有SystemD,请运行。

$ sudo service ssh restart

现在,尝试使用SSH用用户'tempuser'登录到localhost。它应该会显示错误 "Permission denied",如下所示。

$ ssh tempuser@localhost

2、禁用SSH Root访问

同样的方法可以用来禁止一个root用户的登录。但是,如果要完全禁止root用户的访问,也就是禁止所有root用户的访问,请按照下面的步骤进行。

在任何文本编辑器中打开文件'/etc/ssh/sshd_config'并搜索字符串'PermitRootLogin'。撤销这一行,如果它有任何其他值,将其设置为'no'。

PermitRootLogin  no

保存并退出该文件。用以下方法重启SSH

$ sudo systemctl restart ssh

或者如果你没有SystemD。

$ sudo service ssh restart

现在尝试用'root'用户登录localhost,也会显示'Permission Denied'的错误。它也会显示错误 "Permission Denied"。

$ ssh root@localhost

在这篇文章中,我们学习了如何禁止特定用户的SSH登录访问。限制对非root用户的访问取决于个别场景,但是,对Root的访问必须始终受到限制。

如果需要远程Root访问,你应该设置SSH与RSA认证,这比密码认证更安全。阅读SSH的man页面('man ssh')了解更多细节。