You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

如何配置Windows SSH服务器实现SSH密钥与用户密码的双重认证

如何配置Windows SSH服务器实现SSH密钥与用户密码的双重认证

看起来你已经搞定了单因素的SSH登录(要么用密钥要么输密码),现在想要改成必须同时验证密钥和用户密码的双重认证对吧?我来一步步给你说怎么配置Windows上的SSH服务器:

1. 编辑系统级的sshd_config配置文件

首先找到C:\ProgramData\ssh\sshd_config这个文件——注意这是系统层面的配置,不是你用户目录下的那个。打开它(记得用管理员权限的编辑器,比如右键记事本选“以管理员身份运行”),调整以下几个关键配置项:

  • 确保PubkeyAuthentication yes:开启公钥认证功能,这个你之前应该已经设好了
  • 确保PasswordAuthentication yes:开启密码认证,别漏了把行首的注释符号#去掉
  • 最重要的一项:添加或修改AuthenticationMethods publickey,password——这个配置是告诉服务器,必须同时通过公钥认证和密码认证才能登录,逗号分隔表示两种方式都需要(顺序可以改成password,publickey,但一般先验证公钥更合理)

另外要特别注意:文件里可能有一段Match Group administrators的配置块,这个块是针对管理员组用户的特殊规则,如果你需要管理员用户也用双重认证,得把这个块里的认证相关配置也改成和上面一致,不然管理员用户会跳过双重认证规则。

2. 重启SSH服务让配置生效

修改完配置后必须重启服务才能生效,最简单的方式是:

  • 打开管理员权限的命令提示符,依次运行:
    net stop sshd
    net start sshd
    
    或者你也可以打开“服务”管理器,找到「OpenSSH SSH Server」服务,右键选择重启。

3. 验证双重认证是否生效

现在来测试一下:

  • 用带密钥的命令连接:ssh -i 你的密钥文件名.key 用户名@服务器IP
  • 这时候应该会先提示你输入密钥的passphrase(如果你给密钥设置了的话),接着再提示你输入服务器用户的登录密码,只有两者都输入正确,才能成功连接。
  • 如果你尝试不用密钥直接ssh 用户名@服务器IP,会被服务器拒绝;如果密钥不对或者密码不对,也都会被拒绝,完美实现双重验证的要求。

最后给你提个小提醒:记得检查服务器上authorized_keys文件的权限,Windows的SSH服务器对这个文件的权限要求很严,不能给普通用户读写权限,比如确保只有SYSTEM账户和服务器上的目标用户有访问权限,不然可能会出现公钥认证失败的问题。

备注:内容来源于stack exchange,提问作者Jeff123

火山引擎 最新活动