我在为Windows设置OpenSSH时遇到了问题,使用公钥验证。
我已经在我的本地桌面上实现了这个功能,并且可以通过Unix机器或其他OpenSSH for Windows机器使用密钥进行ssh连接。
我已经将构建复制到服务器上,我可以成功使用密码验证,但是当我使用密钥时,出现以下问题:
debug1: Authentications that can continue: publickey,password,keyboard-interactive
debug3: start over, passed a different list publickey,password,keyboard-interactive
debug3: preferred publickey,keyboard-interactive,password
debug3: authmethod_lookup publickey
debug3: remaining preferred: keyboard-interactive,password
debug3: authmethod_is_enabled publickey
debug1: Next authentication method: publickey
debug1: Offering RSA public key: /cygdrive/c/sshusers/jsadmint2232/.ssh/id_rsa
debug3: send_pubkey_test
debug2: we sent a publickey packet, wait for reply
Connection closed by 127.0.0.1
为了测试,我一直在尝试连接本地主机的SSH,但即使远程尝试,我也遇到了同样的问题。
更奇怪的是,在sshd_config
中启用密码和公钥时,它只会尝试使用密钥,然后以上述消息崩溃,并且甚至不会尝试使用密码。
我已经执行了以下步骤:
- 安装Windows的OpenSSH
mkgroup -l >>..\etc\group
(添加本地群组)mkgroup -d >>..\etc\group
(添加域群组)mkpasswd -L -u openssh >>..\passwd
(添加我的本地用户)mkpasswd -D -u jsadmint2232 >>..\passwd
(添加我的域用户)- 编辑文件passwd中的homedir,将其指向c:\sshusers%USER%,其中%USER%是用户名
- 启用密码身份验证,禁用密钥身份验证
- 为jsadmint2232/OpenSSH创建SSH密钥,并确保文件已创建在主目录中
- 在每个用户的.ssh目录中添加authorized_keys文件,并为传入连接的用户添加密钥
net stop opensshd
/net start opensshd
- 测试本地和远程是否都可以使用密码身份验证
- 更新sshd_config以启用密钥身份验证-重新启动opensshd
- 测试连接并获得上述错误。此外,它甚至不会尝试使用密码身份验证。
- 更新sshd_config以完全禁用密码身份验证-重新启动opensshd
- 测试连接,仍然获得以上错误
看起来服务器因某种原因终止了连接。
C:\ProgramData\ssh\sshd_config
有一个新的特殊配置条目,它定义了对于管理员用户,密钥将从__PROGRAMDATA__/ssh/administrators_authorized_keys
读取。同样,这个文件需要特殊的权限,只有系统用户和管理员组才能访问它。 - kayahrAuthorizedKeysFile PROGRAMDATA/ssh/administrators_authorized_keys`,然后重新启动“OpenSSH SSH Server”服务。
- trogne