编译升级最新OpenSSH_8.4p1, 替换sshd.service,解决启动卡死的问题

本文主要是介绍编译升级最新OpenSSH_8.4p1, 替换sshd.service,解决启动卡死的问题,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

  1. 安装openssl, zlib
    我是用的openssl版本为OpenSSL 1.0.2k-fips 26 Jan 2017

  2. 下载openssh最新包
    wget https://cdn.openbsd.org/pub/OpenBSD/OpenSSH/portable/openssh-8.4p1.tar.gz

  3. 解压之后进入目录
    tar -zxf openssh-8.4p1.tar.gz
    cd openssh-8.4p1

  4. 编译安装到/usr/local/openssh,方便打包使用
    ./configure --prefix=/usr/local/openssh
    make -j4 & make install

  5. 修改sshd.service 和sshd-keygen.service文件
    文件路径: /usr/lib/systemd/system/sshd.service
    ExecStart=/usr/sbin/sshd -D $OPTIONS
    修改为:
    ExecStart=/usr/local/openssh/sbin/sshd -D $OPTIONS
    同理
    文件路径: /usr/lib/systemd/system/sshd-keygen.service
    ExecStart=/usr/sbin/sshd-keygen
    修改为:
    ExecStart=/usr/local/openssh/bin/sshd-keygen

  6. 注释掉/etc/ssh/sshd_config文件中的三个配置(如果有的话)

    GSSAPIAuthentication yes
    GSSAPICleanupCredentials no
    UsePAM yes
    
  7. 修改密钥权限
    chown -R 600 /etc/ssh/*key

  8. 修改ssh执行文件,使ssh -V命令可以返回最新的版本号

    mv /usr/bin/ssh /usr/bin/ssh.bak
    cp /usr/local/openssh/bin/ssh /usr/local/sbin/
    mv /usr/bin/ssh /usr/bin/ssh.bak
    cp /usr/local/openssh/bin/ssh  /usr/bin/
    
  9. 重启服务

    systemctl daemon-reload
    service sshd restart
    
  10. 效果
    OpenSSH_8.4p1, OpenSSL 1.0.2k-fips 26 Jan 2017

  11. 到这一步,查看sshd 服务状态,会发现启动sshd卡住,但是sshd 能正常使用。参考解决:

    http://blog.chinaunix.net/uid-28813320-id-5786956.html

以下拷贝自该文章:

检查后台日志会发现下面两行:
– Unit ssh.service has begun shutting down. Jul 02 18:20:04 localhost sshd[31018]: Received signal 15; terminating. Jul 02 18:20:04
localhost systemd[1]: Stopped OpenBSD Secure Shell server.
然而,你去查看进程,却发现进程已经启动,并且已经监听22端口,且能正常连接;

解释: 出现命令挂起的原因就是
sshd在启动完成后,没有给systemd发消息,systemd就一直在那傻等,所以下面我们就修改源码,添加消息;

3,源码修改: 在源码openssh-7.8p1目录下,找sshd.c这个主函数文件,找到调用server_accept_loop
这个函数的行,注意这个函数的定义也在这个文件,不要找错了! 前加一行代码,效果如下:

   /* Signal systemd that we are ready to accept connections */sd_notify(0, "READY=1");/* Accept a connection and return in a forked child */server_accept_loop(&sock_in, &sock_out,&newsock, config_s);}   相应的,在源文件开头几行添加引用头文件:#include <systemd/sd-daemon.h>

4,编译,安装 由于默认的依赖中,不包含sd_notify 这个函数,所以还需要安装依赖的包 apt-get install libsystemd-dev ##Centos7使用命令,yum install systemd-devel
编译时还需要在makefile中指明,编辑文件:Makefile ,找到变量 LIBS,修改如下: LIBS=-lcrypto -ldl -lutil -lz -lcrypt -lresolv -lsystemd
下面就可以直接编译,安装 make -j4 & make install

  1. 根据以上修改源码重新编译之后,服务正常启动。

这篇关于编译升级最新OpenSSH_8.4p1, 替换sshd.service,解决启动卡死的问题的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/900659

相关文章

IDEA和GIT关于文件中LF和CRLF问题及解决

《IDEA和GIT关于文件中LF和CRLF问题及解决》文章总结:因IDEA默认使用CRLF换行符导致Shell脚本在Linux运行报错,需在编辑器和Git中统一为LF,通过调整Git的core.aut... 目录问题描述问题思考解决过程总结问题描述项目软件安装shell脚本上git仓库管理,但拉取后,上l

解决docker目录内存不足扩容处理方案

《解决docker目录内存不足扩容处理方案》文章介绍了Docker存储目录迁移方法:因系统盘空间不足,需将Docker数据迁移到更大磁盘(如/home/docker),通过修改daemon.json配... 目录1、查看服务器所有磁盘的使用情况2、查看docker镜像和容器存储目录的空间大小3、停止dock

idea npm install很慢问题及解决(nodejs)

《ideanpminstall很慢问题及解决(nodejs)》npm安装速度慢可通过配置国内镜像源(如淘宝)、清理缓存及切换工具解决,建议设置全局镜像(npmconfigsetregistryht... 目录idea npm install很慢(nodejs)配置国内镜像源清理缓存总结idea npm in

pycharm跑python项目易出错的问题总结

《pycharm跑python项目易出错的问题总结》:本文主要介绍pycharm跑python项目易出错问题的相关资料,当你在PyCharm中运行Python程序时遇到报错,可以按照以下步骤进行排... 1. 一定不要在pycharm终端里面创建环境安装别人的项目子模块等,有可能出现的问题就是你不报错都安装

idea突然报错Malformed \uxxxx encoding问题及解决

《idea突然报错Malformeduxxxxencoding问题及解决》Maven项目在切换Git分支时报错,提示project元素为描述符根元素,解决方法:删除Maven仓库中的resolv... 目www.chinasem.cn录问题解决方式总结问题idea 上的 maven China编程项目突然报错,是

在Ubuntu上打不开GitHub的完整解决方法

《在Ubuntu上打不开GitHub的完整解决方法》当你满心欢喜打开Ubuntu准备推送代码时,突然发现终端里的gitpush卡成狗,浏览器里的GitHub页面直接变成Whoathere!警告页面... 目录一、那些年我们遇到的"红色惊叹号"二、三大症状快速诊断症状1:浏览器直接无法访问症状2:终端操作异常

Spring Boot分层架构详解之从Controller到Service再到Mapper的完整流程(用户管理系统为例)

《SpringBoot分层架构详解之从Controller到Service再到Mapper的完整流程(用户管理系统为例)》本文将以一个实际案例(用户管理系统)为例,详细解析SpringBoot中Co... 目录引言:为什么学习Spring Boot分层架构?第一部分:Spring Boot的整体架构1.1

mybatis直接执行完整sql及踩坑解决

《mybatis直接执行完整sql及踩坑解决》MyBatis可通过select标签执行动态SQL,DQL用ListLinkedHashMap接收结果,DML用int处理,注意防御SQL注入,优先使用#... 目录myBATiFBNZQs直接执行完整sql及踩坑select语句采用count、insert、u

Python爬虫HTTPS使用requests,httpx,aiohttp实战中的证书异步等问题

《Python爬虫HTTPS使用requests,httpx,aiohttp实战中的证书异步等问题》在爬虫工程里,“HTTPS”是绕不开的话题,HTTPS为传输加密提供保护,同时也给爬虫带来证书校验、... 目录一、核心问题与优先级检查(先问三件事)二、基础示例:requests 与证书处理三、高并发选型:

前端导出Excel文件出现乱码或文件损坏问题的解决办法

《前端导出Excel文件出现乱码或文件损坏问题的解决办法》在现代网页应用程序中,前端有时需要与后端进行数据交互,包括下载文件,:本文主要介绍前端导出Excel文件出现乱码或文件损坏问题的解决办法,... 目录1. 检查后端返回的数据格式2. 前端正确处理二进制数据方案 1:直接下载(推荐)方案 2:手动构造