强制升级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

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

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

赞 (0)
全栈程序员-站长的头像全栈程序员-站长

相关推荐

  • 《JavaScript设计模式》初次笔记——wsdchong[通俗易懂]

    《JavaScript设计模式》初次笔记——wsdchong[通俗易懂]《JavaScript设计模式》初次笔记前言设计模式一直久仰大名,但是没有去花时间去了解,于是今天特意花时间去看《JavaScript设计模式》(2013年6月出版)和w3cschool上的设计模式。然后做了一些笔记。以《JavaScript设计模式》为目录,以w3cschool上的设计模式为补充。讲的内容有三:设计模式、JavaScript设计模式、其他(模块化的JavaScript设计模式、jQuery设计模式、jQuery插件设计模式)。学习目的:尝试性地了解JavaScript设计模式,方

    2022年7月12日
  • java代码大全及详解_Java练级攻略[通俗易懂]

    java代码大全及详解_Java练级攻略[通俗易懂]Java作为一门使用范围巨大的语言,几乎所有的大型互联网或者分布式架构设计都采用Java相关的技术栈,这也是越来越多的人投入到Java的怀抱中,那Java练级应该怎样做起呢?首先给出几点学习建议:一定要有长时间学习,甚至终生学习的态度;一定要动手实操,无论实例多么简单,建议动手操作一遍;一定要学会思考,思考为什么要这样,而不是那样;不要乱买书,基础的知识是经过很长时间积累的;回顾一下技术的发展,你…

    2022年7月7日
  • mysql创建前缀索引

    mysql创建前缀索引ALTERtable表名addindextitle_pre(列名(100))列名后面的数字代表前缀的长度,前缀长度并不是越长越好,这里涉及到一个选择性问题,selectcount(distinct列名)/count(*)asa,COUNT(DISTINCTleft(列名,100))asb,COUNT(DISTINCTleft(列名,110))ascfrom表名来查…

    2022年5月10日
  • Django安装教程_怎样安装ubuntu安装教程

    Django安装教程_怎样安装ubuntu安装教程第二步:安装django这一步由于网络问题可能会出现连接超时报错,只能重试:第三步:测试效果第四步:创建Django项目启动Web服务启动时会提示如下错如:解决办法:再运行就不会报错了。以上显示就是正常运行了,我们可以访问测试一下:返回状态码200表示成功!!!或者通过浏览器访问:参考:https://docs.djangoproject.com/en/4.0/intro/install/上一课1.1Docker安装Django下一课1.3完成一个简单的Demo

    2022年9月8日
  • sql系列(基础)-第二章 限制和排序数据

    sql系列(基础)-第二章 限制和排序数据

    2022年1月2日
  • 如何免费申请博客 用WordPress建设网站

    如何免费申请博客 用WordPress建设网站如何用WordPress搭建博客  10年前左右开始兴起第一波互联网浪潮,博客作为一种新型的社交和阅读方式进入人们的视野,那一段时期是博客的黄金时代。现在,人们说“博客已死”。因为大概在7、8年前第二波互联网浪潮突然出现,且来势汹汹——移动互联网的时代到来了。人们被各种新型的社交媒体所吸引,单单手机APP就使人们忙的目不暇接。人们的选择越来越多,于是碎片化的娱乐逐渐成为人们社交休闲方式。人们不…

    2022年7月21日

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

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