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服务器它应该首先尝试公钥认证方法;如果公钥认证失败,则允许用户尝试使用密码认证。
这种配置提供了两层认证机制:
- 公钥认证:用户必须拥有并提供一个SSH服务器已知的有效公钥。这是一种非常安全的身份验证方法,因为它基于密钥对,用户必须持有私钥才能证明他们拥有相应的公钥。
- 密码认证:如果出于某种原因公钥认证失败(例如用户没有提供公钥,或提供的不正确),SSH服务器将允许用户尝试通过他们的账户密码进行身份验证。
By the way
默认值是AuthenticationMethods publickey,password publickey
在SSH配置中,当AuthenticationMethods
选项设置为publickey,password publickey
,这指定了一种多阶段的身份验证过程,要求用户首先通过公钥方法进行认证,接下来可以选择使用密码或再次使用公钥来完成认证。
这种配置要求两个步骤:
- 第一步:用户必须通过其公钥成功认证。这意味着用户需要提供一个SSH服务器已知的有效公钥。
- 第二步:在成功完成公钥认证后,用户再次被要求进行认证,第二次认证可以选择使用密码或者是另一个公钥。
在SSH的配置中,AuthenticationMethods
指令可以使用多种值来指定客户端和服务器之间用于认证的方法。这些值可以单独使用,也可以组合使用,以创建多阶段认证过程。以下是一些可用的认证方法值及其简要说明:
- publickey: 公钥认证方法,要求客户端提供并成功验证一个预先配置在服务器上的公钥。
- password: 密码认证方法,要求用户输入他们的密码。
- keyboard-interactive: 键盘交互式认证,允许服务器发起一个或多个提示,要求用户进行响应。这可以包括传统的密码提示,一次性密码(OTP),或其他形式的交互式验证。
- gssapi-with-mic: GSSAPI(通用安全服务应用程序接口)认证,这是一个用于通过网络认证的框架,支持多种认证机制,例如Kerberos。