ssh中的多重验证配置

26 阅读2分钟

do it

可以在服务器的/etc/ssh/sshd_config中或者在/etc/ssh/sshd_config.d里新建文件,添加以下内容进行验证测试

AuthenticationMethods publickey,password

随后在~/.ssh/authorized_keys中添加允许登录的设备的ssh公钥

配置完成后可以重启sshd使之生效

systemctl restart sshd

在SSH配置中,AuthenticationMethods选项用来指定服务端接受的用户身份认证方法。当设置为publickey,password时,这告诉SSH服务器它应该首先尝试公钥认证方法;如果公钥认证失败,则允许用户尝试使用密码认证。

这种配置提供了两层认证机制:

  1. 公钥认证:用户必须拥有并提供一个SSH服务器已知的有效公钥。这是一种非常安全的身份验证方法,因为它基于密钥对,用户必须持有私钥才能证明他们拥有相应的公钥。
  2. 密码认证:如果出于某种原因公钥认证失败(例如用户没有提供公钥,或提供的不正确),SSH服务器将允许用户尝试通过他们的账户密码进行身份验证。

By the way

默认值是AuthenticationMethods publickey,password publickey

在SSH配置中,当AuthenticationMethods选项设置为publickey,password publickey,这指定了一种多阶段的身份验证过程,要求用户首先通过公钥方法进行认证,接下来可以选择使用密码或再次使用公钥来完成认证。

这种配置要求两个步骤:

  1. 第一步:用户必须通过其公钥成功认证。这意味着用户需要提供一个SSH服务器已知的有效公钥。
  2. 第二步:在成功完成公钥认证后,用户再次被要求进行认证,第二次认证可以选择使用密码或者是另一个公钥。

在SSH的配置中,AuthenticationMethods指令可以使用多种值来指定客户端和服务器之间用于认证的方法。这些值可以单独使用,也可以组合使用,以创建多阶段认证过程。以下是一些可用的认证方法值及其简要说明:

  1. publickey: 公钥认证方法,要求客户端提供并成功验证一个预先配置在服务器上的公钥。
  2. password: 密码认证方法,要求用户输入他们的密码。
  3. keyboard-interactive: 键盘交互式认证,允许服务器发起一个或多个提示,要求用户进行响应。这可以包括传统的密码提示,一次性密码(OTP),或其他形式的交互式验证。
  4. gssapi-with-mic: GSSAPI(通用安全服务应用程序接口)认证,这是一个用于通过网络认证的框架,支持多种认证机制,例如Kerberos。