在 ssh 中禁用密码验证

在 ssh 中禁用密码验证

我遵循了以下指南:

但是仍然可以通过输入密码来 ssh 进入机器(在 win 上使用 putty 尝试过)

有什么建议吗?

答案1

替换该行之后:

#PasswordAuthentication yes

使用以下行:

PasswordAuthentication no

/etc/ssh/sshd_config保存了文件,你必须重启 ssh 服务器在终端中使用以下命令:

sudo service ssh restart

或者:

sudo restart ssh

====重要提示!

密码验证默认启用(截至 2024 年 1 月)由文件中的设置/etc/ssh/sshd_config.d/50-cloud-init.conf。您必须更改此文件的设置或删除该文件:rm /etc/ssh/sshd_config.d/50-cloud-init.conf按照以下评论中的建议,以禁用密码验证

答案2

在禁用 ssh 密码验证之前,请确保您的私钥访问能够按预期工作。确认后,您可以禁用密码验证。我建议进行以下更改以进一步保护服务器。

使用以下方式编辑文件:sudo nano /etc/ssh/sshd_config

请确保在文件中启用了以下值:

PermitRootLogin no

PasswordAuthentication no

ChallengeResponseAuthentication no

UsePAM no

保存文件然后重新启动远程控制服务

sudo service ssh restart

或者

sudo systemctl restart ssh

编辑: 有一个问题,这些参数有什么用。让我们逐一介绍一下。对于最新版本,您可以随时转到手册页OpenSSH SSH 守护进程配置文件

1. 允许Root登录

指定 root 是否可以使用 ssh(1) 登录。参数必须是“yes”、“without-password”、“forced-commands-only”或“no”。默认值为“yes”。如果将此选项设置为“without-password”,则将禁用 root 的密码验证。

如果将此选项设置为“forced-commands-only”,则将允许使用公钥身份验证的 root 登录,但前提是已指定命令选项(即使通常不允许 root 登录,这对于进行远程备份也很有用)。所有其他身份验证方法对 root 都禁用。

如果此选项设置为“no”,则不允许root登录。

不允许使用密码“Root 登录”被认为比允许使用密码更安全。也就是说,您根本不应该以 root 身份登录,除非没有其他方法(sudo 等)可行。

2. 密码认证

指定是否允许密码验证。默认为“是”。

基本上就是这样。如果答案为“否”,则您不能使用登录名和密码登录,但是……您可以使用其他选项绕过它,因此请继续阅读。

3. 质询响应认证

指定是否允许质询-响应身份验证(例如通过 PAM)。默认为“是”。

4. 使用PAM

UsePAM 启用可插入身份验证模块接口。如果设置为“yes”,则除了所有身份验证类型的 PAM 帐户和会话模块处理外,还将启用使用 ChallengeResponseAuthentication 和 PasswordAuthentication 的 PAM 身份验证。

由于 PAM 质询-响应身份验证通常与密码身份验证具有相同的作用,因此您应该禁用 PasswordAuthentication 或 ChallengeResponseAuthentication。默认值为“否”。

最后是来自上面链接的 Ubuntu 手册的一些信息。默认值可能会有所不同,因此如果您想保护您的服务器,我建议您明确设置上面提到的那些选项。

请注意,Debian openssh-server 软件包在 /etc/ssh/sshd_config 中设置了几个标准选项,这些选项不是 sshd(8) 中的默认选项。确切的列表取决于软件包是全新安装的还是从各种可能的先前版本升级而来的,但至少包括以下内容:

  • ChallengeResponseAuthentication 否
  • X11转发 是
  • PrintMotd 号码
  • AcceptEnv LANG LC_* 子系统 sftp /usr/lib/openssh/sftp-server
  • UsePAM 是

相关内容