我在使用公钥身份验证为 Windows 设置 OpenSSH 时遇到问题。
我有这个在我的本地桌面上工作,并且可以使用来自 Unix 机器或其他用于 Windows 机器的 OpenSSH 的密钥进行 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 连接到 localhost,但即使在远程尝试时,我也会遇到同样的问题。
更奇怪的是,当我同时启用密码和公钥时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 密钥,并确保在主目录中创建文件
- 为每个用户添加了 authorized_keys 文件到 .ssh 目录中,并为传入的连接用户添加了密钥
net stop opensshd
/net start opensshd
- 测试密码身份验证是否在本地和远程都有效
- 更新了 sshd_config,以启用密钥身份验证 - 重新启动 opensshd
- 测试连接并得到上述错误。此外,它甚至不尝试密码验证。
- 更新 sshd_config,完全禁用密码验证 - 重新启动 opensshd
- 测试连接,仍然出现上述错误
似乎服务器出于某种原因正在终止连接。