ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

openssh 8 源码打包成rpm

2021-11-07 09:34:47  阅读:329  来源: 互联网

标签:sshd openssh devel 源码 ssh rpm


关键字:根据openssh源码包,制作rpm安装包;升级 openssh

 

1、下载源码包:官网openssh.com ---- release ,以openssh-8.8p1.tar.gz为例

2、建立环境:

  a:建立目录    

mkdir -p /root/rpmbuild/{SOURCES,SPECS,RPMS,SRPMS,BUILD,BUILDROOT}

 

  b:安装相应的应用包

yum install gcc gcc-c++ glibc glibc-devel openssl-devel openssl prce pcre-devel zlib zlib-devel make wget krb5-devel pam-devel libX11-devel xmkmf libXt-devel initscripts libXt-devel imake gtk2-devel

  

3、配置及打包过程(文件名及目录名并不准确)

  a、将源码文件放置到SOURCE目录

  b、展开此文件,在SOURCE\opensshxxx\contrib/redhat/openssh-spec文件放置到SPECS目录

  c、修改此openssh-spec文件

   

  d、(可选)对最终得到的rpm包的配置文件进行配置

%post server定位到这里,加入以下行
chmod  600  /etc/ssh/ssh_host_*_key
sed -i -e  "s/#PermitRootLogin prohibit-password/PermitRootLogin yes/g"    /etc/ssh/sshd_config
sed -i -e  "s/^UsePAM.*/UsePAM no/g"  /etc/ssh/sshd_config

  上面两行的意思是:新建的rpm包安装后,允许root用户远程ssh;UsePAM行是不使用PAM。

  %post server这下面可以做的工作非常多,相当于对你打包完成的应用进行各种默认配置、进程的运行级等等

  e、制作rpm安装包

rpmbuild -bb  openssh-spec

  完成后,rpm包放置在RPMS目录里。对其对行打包即可直接分发。

  

tar cvf /root/openssh-8-update.tar RPMS/*.rpm

  

  f、完成,得到openssh-8-update.tar包

        说明:如果不进行d步骤,打包完成后,安装这个rpm,默认root用户不能登录

4、远程不掉线升级过程

  假设原系统是openssh-7.4,主机IP为x.x.x.x

  [避免升级失败]ssh x.x.x.x,然后执行ping命令,避免timeout退出,这一步主要是起预防升级出错造成远程无法连接到主机

 

  再开一个ssh到x.x.x.x,不要停掉原sshd服务,直接升级openssh

rpm -Uvh openssh*.rpm

  升级完成后,停掉sshd,然后再重新启动sshd,就是最新版了。如果这一步启动sshd失败,或者意外掉线了,不要害怕,可以利用之前一直在执行ping的那个ssh连接进行排查,避免造成升级失败后远程无法连接的情况

 

5、其它

 

标签:sshd,openssh,devel,源码,ssh,rpm
来源: https://www.cnblogs.com/peterhu318/p/15519072.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有