首页 > 解决方案 > API 调用 libssh2_userauth_publickey_fromfile() 失败

问题描述

libssh2_userauth_publickey_fromfile()失败并显示错误代码

-19 (LIBSSH2_ERROR_PUBLICKEY_UNVERIFIED)。

我只想使用公钥身份验证方法(而不是基于密码的身份验证)。通过密码进行身份验证工作正常。

系统:Windows Server 2019

接口调用:

libssh2_userauth_publickey_fromfile(session, username, keyfile1, keyfile2, password)

我在 C 文件中将 keyfile1 和 keyfile2 定义为:

const char *keyfile1 = "C:\\Users\\Administrator\\.ssh\\id_rsa.pub";
const char *keyfile2 = "C:\\Users\\Administrator\\.ssh\\id_rsa";

我怀疑它必须对 Windows 上的密钥文件进行 EOL 处理(此调用在我的 Linux 系统上运行良好(具有适当的密钥文件位置))。

关于我们如何从密钥文件中删除 EOL 或额外空格以使libssh2API 调用成功的任何想法?

标签: cwindowslibssh2

解决方案


libssh2/libssh2issue 68之后,首先检查使用的 libssh2 的版本。

对于旧版本,请尝试使用遵循旧 PEM 格式的密钥

ssh-keygen -m PEM -t rsa -P "" -f afile 

推荐阅读