手册页指出 PermitRootLogin
指定 root 是否可以使用
ssh(1).
但是,不清楚此检查是基于用户名 ( "root") 还是 UID ( 0)。
如果将 root 帐户重命名为 会发生什么"admin"?将"admin"能够登录的时候PermitRootLogin=no?
如果有两个 UID=0 的帐户,即"root"和 会发生"admin"什么?他们中的任何一个都可以登录吗?
Jak*_*uje 19
我很欣赏@mtak 在另一个答案中的方法,但即使没有这个试验,答案也是显而易见的。
它基于UID,如您在openssh的源代码中所见:
if (authctxt->pw->pw_uid == 0 &&
!auth_root_allowed(auth_method))
authenticated = 0;
Run Code Online (Sandbox Code Playgroud)
此外,每种身份验证方法都显示类似
if (pw->pw_uid == 0 && options.permit_root_login != PERMIT_YES)
ok = 0;
Run Code Online (Sandbox Code Playgroud)
grep- 在代码中进一步,您可能会注意到,没有strcmp('root', pw->pw_name)或有其他选择,如果它对您来说就足够了。
mta*_*tak 16
似乎检查是在 UID 上完成的(在 上测试OpenSSH_6.7p1 Debian-5+deb8u3, OpenSSL 1.0.1t 3 May 2016):
将 PermitRootLogin 设置为关闭:
mtak@pdv1:~$ grep PermitRootLogin /etc/ssh/sshd_config
PermitRootLogin no
Run Code Online (Sandbox Code Playgroud)
确保admin创建的用户名为UID 0:
mtak@pdv1:~$ sudo grep admin /etc/passwd
admin:x:0:0:Root User:/root:/bin/bash
Run Code Online (Sandbox Code Playgroud)
确保该用户可用于登录系统:
mtak@pdv1:~$ su - admin
Password:
root@pdv1:~#
Run Code Online (Sandbox Code Playgroud)
检查我们是否可以使用SSH登录系统:
mtak@rubiks:~$ ssh admin@pdv1
admin@pdv1's password:
Permission denied, please try again.
Run Code Online (Sandbox Code Playgroud)
如果我们打开 PermitRootLogin:
mtak@pdv1:~$ grep PermitRootLogin /etc/ssh/sshd_config
PermitRootLogin yes
Run Code Online (Sandbox Code Playgroud)
并尝试登录:
mtak@rubiks:~$ ssh admin@pdv1
admin@pdv1's password:
Linux pdv1 4.4.8-1-pve #1 SMP Tue May 17 16:14:08 CEST 2016 x86_64
Last login: Wed Aug 24 12:05:28 2016 from xxx
root@pdv1:~#
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2014 次 |
| 最近记录: |