强制升级openssl导致无法使用SSH(生成ssh公钥)

最近由于工作需求要搭建freeswitch,整个过程比较纠结,遂总结于此留作备忘。起源由于我的需求是将freeswitch跑起来,所以先按照freeswitchwiki上的介绍编译freeswitch,但configure过程便遇到问题:configure:error:OpenSSL>=1.0.1eandassociateddevelopementheadersrequi…

大家好,又见面了,我是你们的朋友全栈君。

最近由于工作需求要搭建freeswitch,整个过程比较纠结,遂总结于此留作备忘。

起源

由于我的需求是将freeswitch跑起来,所以先按照freeswitch wiki上的介绍编译freeswitch,但configure过程便遇到问题:

configure: error: OpenSSL >= 1.0.1e and associated developement headers required

很明显,系统的openssl版本过于古老, 而安装freeswitch的编译和运行需要openssl >= 1.0.0e,第一直觉就是先把openssl升级再说,无尽的折磨从此开始。

坑一:openssl编译

一般c项目的configure过程中会通过配置–prefix=xxx来设定被编译lib的安装目录,我一般习惯放到/usr/local/xxx,所以openssl也不例外,顺利安装到/usr/local/openssl-1.0.1h目录下,但freeswitch的configure还是一直提示openssl版本太低:

configure: error: OpenSSL >= 1.0.1e and associated developement headers required

不过很快意识到自己犯了个低级错误,编译默认搜索的header和lib还是系统自带的老版本openssl,于是在freeswitch的configure过程中显示设定openssl的相关路径:

./configure –prefix=/usr/local CFLAGS=”-I/usr/local/openssl-1.0.1h/include” LDFLAGS=”-L/usr/local/openssl-1.0.1h/lib”

一波未平一波又起,freeswitch的configure过程又抛出libcrypt.so需要recompile with -fPIC,看起来是openssl的config需要指定-fPIC来编译动态库,freeswitch通过动态链接的形式依赖openssl相关的库,于是加上shared和-fPIC后重新configure和make openssl:

./config shared –prefix=/usr/local/openssl-1.0.1h -fPIC

终于freeswitch的configure和make过了,长舒一口气,但一个更大的坑还在后面。

坑二:openssl链接

原以为freeswitch可以愉快的运行了,事与愿违,server无情的抛出以下错误:

symbol lookup error: /usr/local/lib/libfreeswitch.so.1: undefined symbol: EVP_aes_128_ctr

看起来是因为默认的sshd是用老版本openssl编译的,于是想到升级openssh,指定依赖最新版本的openssl,于是一阵download,configure,make,make install,这里需要注意的是openssh的configure参数配置需要手动指定openssl库的地址:

./configure –prefix=/usr/local/openssh –sysconfdir=/etc/ssh –with-pam –with-ssl-dir=/usr/local/openssl –with-md5-passwords –mandir=/usr/share/man –with-zlib=/usr/local/zlib

因为考虑到openssh的重要性,覆盖默认的ssh风险比较高,因此选择先安装到/usr/local/openssh,然后将/usr/sbin/sshd符号链接到/usr/local/openssh/sbin/sshd中:

首先停止正在运行的sshd服务:service sshd stop

备份老版本sshd文件,然后删除/usr/sbin/ssh

创建符号链接

启动sshd服务service sshd start

立马通过跳板机ssh登录来测试新版本openssh的效果,一切看起来完美!

总结

纠结了这么久,最后的效果就两点:

升级openssl,覆盖默认的老版本openssl,这里选择的是覆盖,即安装到/usr目录下,因为我没找到可以让freeswitch运行时手动指定openssl相关so路径的办法。

升级openssh,考虑到风险,先安装到/usr/local/openssh,然后通过符号链接将/usr/sbin/sshd链接到/usr/local/openssh/sbin/sshd

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/129133.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • journalctl基本介绍

    journalctl基本介绍journalctl基础用法1、查看所有日志(默认显示本次启动的所有日志)[root@localhost~]#journalctl查看本次启动的所有日志也可以使用[root@localhost~]#journalctl-b2、查看内核日志[root@localhost~]#journalctl-k3、查看指定时间的日志通过–since和–until选项,可以过滤任意时间限制,显示指定条件之前、之后或之间的日志[root@localhost~]#jour

  • java读取properties文件的几种方法

    java读取properties文件的几种方法

  • redis客户端连接工具连接docker里面redis_gbase客户端连接工具

    redis客户端连接工具连接docker里面redis_gbase客户端连接工具Redis客户端连接工具AnotherRedisDesktopManagermac想用到brew的话,地址:https://www.jianshu.com/p/b7b789a2ed2cAnotherRedisDesktopManager为redis可视化工具,真的巨好用呀!!!原文地址:https://blog.csdn.net/huizhou_achao/article/details/108467792下载及安装教程地址:https://github.com/qishibo/An

  • jieba库是python内置函数库,可以直接使用_jieba库pip安装出现红字

    jieba库是python内置函数库,可以直接使用_jieba库pip安装出现红字jieba库是一款优秀的Python第三方中文分词库,jieba支持三种分词模式:精确模式、全模式和搜索引擎模式,下面是三种模式的特点。精确模式:试图将语句最精确的切分,不存在冗余数据,适合做文本分析全模式:将语句中所有可能是词的词语都切分出来,速度很快,但是存在冗余数据搜索引擎模式:在精确模式的基础上,对长词再次进行切分jiebaGitHub开源地址:https://…

  • excel文件不能上传怎么解决_上传视频的方法

    excel文件不能上传怎么解决_上传视频的方法EXCEL上传不了解决 安装AccessDatabaseEngine.exe 配置管理 把这2项属性里的内置账号改成localsystem   点击右键 找到方面点击进去找到外围服务器把下面的 改成turn    语句: declare@excfilevarchar(100),@

  • 规范化理论:多值依赖的理解_依赖关联泛化实现

    规范化理论:多值依赖的理解_依赖关联泛化实现多值依赖的定义我们用一个例子来引出多值依赖(MultivaluedDependency,MVD)的含义。假设学校中一门课程可由多名教师讲授,教学中他们使用相同的一套参考书,这样我们可用下图的非规范化的关系来表示课程C、教师T和参考书B间的关系。关系CTB如果关系CIB转化成规范化的关系,如图所示。规范后的关系CTB由此可以看出,规范后的关系模式…

    2022年10月25日

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号