c - 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 或额外空格以使libssh2
API 调用成功的任何想法?
解决方案
在libssh2/libssh2
issue 68之后,首先检查使用的 libssh2 的版本。
对于旧版本,请尝试使用遵循旧 PEM 格式的密钥
ssh-keygen -m PEM -t rsa -P "" -f afile
推荐阅读
- python - 我正在尝试使用 tkinter for GUI 在 python 中为数据库编写代码。但是,当我按下提交按钮时,.get() 函数不起作用
- sorting - 我想在谷歌表中显示另一张表中分配代码的最新价格
- mingw - 使用 gcc / mingw 时应该如何链接到静态 wxWidgets 库?
- ruby-on-rails - 确认邮件到未确认邮件
- firebase - 你如何在flutter.dart中连续检查互联网访问,而不是连接
- python-3.x - 如何使用 cProfile 和多处理池?
- c# - 加载与引用 .NET DLL 位于同一文件夹中的引用 .NET DLL 时出现“未找到”异常
- javascript - 为什么不顺风覆盖本地定义的样式?
- r - 在两个值/日期间隔之间按 id 填写最大值
- javascript - 如何禁用vtk的热键