Linux OpenSSH服务器拒绝root用户访问/登录
如何在Linux服务器上通过ssh会话阻止对root用户的访问?
出于安全原因,如何阻止root用户通过基于ssh的会话登录?
sshd(OpenSSH守护程序)是ssh的守护程序。
服务器端ssh配置在Linux操作系统上的/etc/ssh/sshd_config文件中定义。
ssh是sshd守护程序的客户端程序。
您需要使用DenyUsers
选项来阻止对Linux上root用户的访问。
阻止根用户访问的另一种方法是在sshd_config文件中将PermitRootLogin设置为no。
为root用户禁用SSH登录的过程
要为根帐户禁用SSH登录,请执行以下操作:
- 使用ssh登录到Linux或者Unix服务器:
ssh user @ your-server
- 使用vi编辑/etc/ssh/sshd_config文件
- 设置``PermitRootLogin no`禁用root的SSH登录
- 保存并关闭文件
- 重新加载sshd服务器以拒绝root登录
让我们详细了解所有步骤。
Linux OpenSSH服务器拒绝root用户访问/登录
DenyUsers
选项可以阻止任何用户。
此选项后可以跟一列用空格分隔的用户名模式。
不允许使用与其中一种模式匹配的用户名登录。
只有用户名有效;无法识别数字用户ID(UID)。
默认情况下,所有用户都可以登录。
如果该模式采用USER @ HOST的形式,则分别检查USER和HOST,将登录名限制为来自特定主机的特定用户。
打开/etc/ssh/sshd_config文件
使用vi命令命令编辑/etc/ssh/sshd_config文件,运行:
# vi /etc/ssh/sshd_config
拒绝root用户访问
如下添加或者修改以阻止root用户:
DenyUsers root
如果要阻止其他用户,只需将名称追加到DenyUsers
DenyUsers root, user2, user3
保存并关闭文件。
重新启动sshd服务:
#/etc/init.d/sshd restart
或者
$ sudo service sshd restart
对于基于systemd的系统:
$ sudo systemctl restart sshd
OpenSSH使用PermitRootLogin选项拒绝root用户
此选项指定root是否可以使用ssh登录。
语法为:
PermitRootLogin {option}
该选项必须为"是","禁止密码","仅强制命令"或者"否"。
默认值为禁止密码。
例如,要通过ssh拒绝root登录,请在sshd_config文件中进行如下设置:
PermitRootLogin no
再次,重新启动或者重新加载sshd服务:
sudo systemctl restart ssh
测试一下
运行ssh命令,如下所示:
ssh root@box-name ssh [email protected]
您应该看到如下错误:
[email protected]: Permission denied (publickey).
现在,您只能以普通或者非root用户身份登录:
ssh [email protected]
接下来使用sudo命令或者su命令获得root shell访问权限:
sudo -i
或者
su