sshd_config
我刚刚在我的服务器上安装了 Ubuntu 14.04,当我在我的文件中遇到这个时,我正在设置我的所有配置文件:
# Authentication:
LoginGraceTime 120
PermitRootLogin without-password
StrictModes yes
这让我非常担心。我认为有人可能以 root 身份登录我的服务器,而无需密码。
我尝试通过以下方式以 root 身份连接到我的服务器:
johns-mbp:~ john$ ssh [email protected]
The authenticity of host '192.168.1.48 (192.168.1.48)' can't be established.
RSA key fingerprint is 40:7e:28:f1:a8:36:28:da:eb:6f:d2:d0:3f:4b:4b:fe.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '192.168.1.48' (RSA) to the list of known hosts.
[email protected]'s password:
我输入了一个空白密码,但它没有让我进入,这让我松了一口气。所以我的问题是:没有密码是什么意思,为什么这是 Ubuntu 14.04 中的默认设置?
答案1
来自手册页:
允许Root登录
指定 root 是否可以使用以下方式登录远程控制(1). 参数必须是“yes”、“without-password”、“forced-commands-only”或“no”。默认为“yes”。
如果将此选项设置为
prohibit-password
(或其弃用的别名、without-password
)、root 的密码和键盘交互身份验证均被禁用。
如果将此选项设置为“forced-commands-only”,则将允许使用公钥身份验证的 root 登录,但前提是
command
已指定该选项(即使通常不允许 root 登录,这对于进行远程备份也很有用)。所有其他身份验证方法对 root 都禁用。如果此选项设置为“no”,则不允许root登录。
因此,prohibit-password
仅允许使用公钥认证进行 root 登录。这通常用于 shell 脚本和自动化任务。
答案2
实际上,如果您使用 PAM 身份验证,此设置几乎不起作用。在配置文件的底部,sshd_config
您将发现:
# Set this to 'yes' to enable PAM authentication, account processing,
# and session processing. If this is enabled, PAM authentication will
# be allowed through the ChallengeResponseAuthentication and
# PasswordAuthentication. Depending on your PAM configuration,
# PAM authentication via ChallengeResponseAuthentication may bypass
# the setting of "PermitRootLogin without-password".
# If you just want the PAM account and session checks to run without
# PAM authentication, then enable this but set PasswordAuthentication
# and ChallengeResponseAuthentication to 'no'.
Ubuntu 上的默认设置是使用 PAM 身份验证:
UsePAM yes
答案3
在较新版本的 sshd(OpenSSH 7.0 及以上版本,发布于 2015-08-11)中“ without-password
”已更改为“ prohibit-password
”。
prohibit-password
两个版本都可以,如果可以的话最好使用“ ”:它可以更好地解释自己。
来源:
- sshd_config(5): PermitRootLogin 现在接受“prohibit-password”参数作为“without-password”的不太明确的同义词。