在开发板上已移植openssh,使用sshd开启ssh时,出现上图报错怎么解决
1条回答 默认 最新
- 杨同学* 2024-09-26 17:26关注
该回答引用ChatGPT4o及杨同学*共同作答, 如有帮助,还请采纳。
关于你在开发板上移植 OpenSSH 时遇到的EVP_aes_128_ctr
符号未定义问题,通常与 OpenSSL 库的兼容性或安装不完整有关。该问题常见于 OpenSSL 版本不匹配或 OpenSSL 未正确编译、安装,导致 SSH 依赖的加密算法未被正确链接。以下是解决该问题的几种方案:
1. 检查 OpenSSL 版本
确保系统上安装的 OpenSSL 版本是 SSH 兼容的。可以通过以下命令查看当前安装的 OpenSSL 版本:
openssl version
如果版本不正确,可能需要重新安装 OpenSSL。
2. 重新编译 OpenSSL 并启用所需算法
某些编译选项可能会禁用某些加密算法(如
EVP_aes_128_ctr
)。如果你手动编译了 OpenSSL,确保你在编译时启用了该算法。可以使用以下步骤重新编译 OpenSSL:
./config --prefix=/usr/local/openssl --openssldir=/usr/local/openssl enable-ctr make sudo make install
将编译好的 OpenSSL 复制到正确的目录下,以便 SSHD 可以找到所需的加密算法。
3. 检查 OpenSSH 与 OpenSSL 的链接
确保 OpenSSH 编译时链接了正确版本的 OpenSSL,可以检查 OpenSSH 运行时库是否指向了正确的 OpenSSL 版本。使用以下命令检查:
ldd /usr/sbin/sshd | grep ssl
查看
libcrypto
和libssl
是否正确链接到了 OpenSSL。如果指向了错误的库,可能需要重新配置或调整LD_LIBRARY_PATH
环境变量。4. 重新编译 OpenSSH
如果重新安装或编译 OpenSSL 后问题仍然存在,可以尝试重新编译 OpenSSH,使其与当前的 OpenSSL 版本兼容。以下是重新编译 OpenSSH 的步骤:
./configure --with-ssl-dir=/usr/local/openssl make sudo make install
5. 更新库缓存
如果编译和安装正确的库后问题依旧,可能需要刷新库缓存以确保系统使用了正确的 OpenSSL 库。使用以下命令刷新:
sudo ldconfig
6. 清理旧的 OpenSSL 版本
如果系统中有多个 OpenSSL 版本,可能会导致冲突。你可以尝试清理旧的 OpenSSL 版本,或者明确指定 SSH 使用的 OpenSSL 库路径。
7. 使用预编译包
如果编译和配置对你来说复杂,也可以尝试直接安装发行版中提供的预编译 OpenSSH 和 OpenSSL 包。这些通常已经过测试并且兼容。
总结:
出现
EVP_aes_128_ctr
符号未定义问题时,通常是因为 OpenSSH 和 OpenSSL 之间的版本兼容性或配置问题。按照上述步骤,特别是重新安装 OpenSSL 并确保所有库正确链接,应该能够解决这个问题。如果有进一步的需求可以随时继续讨论。解决 无用评论 打赏 举报
悬赏问题
- ¥15 如何在vue.config.js中读取到public文件夹下window.APP_CONFIG.API_BASE_URL的值
- ¥50 浦育平台scratch图形化编程
- ¥20 求这个的原理图 只要原理图
- ¥15 vue2项目中,如何配置环境,可以在打完包之后修改请求的服务器地址
- ¥20 微信的店铺小程序如何修改背景图
- ¥15 UE5.1局部变量对蓝图不可见
- ¥15 一共有五道问题关于整数幂的运算还有房间号码 还有网络密码的解答?(语言-python)
- ¥20 sentry如何捕获上传Android ndk 崩溃
- ¥15 在做logistic回归模型限制性立方条图时候,不能出完整图的困难
- ¥15 G0系列单片机HAL库中景园gc9307液晶驱动芯片无法使用硬件SPI+DMA驱动,如何解决?