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

大家可能已经知道,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')了解更多细节。



