关键字:根据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:安装相应的应用包
1 | 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包的配置文件进行配置
1 2 3 4 | %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安装包
1 | rpmbuild -bb openssh-spec |
完成后,rpm包放置在RPMS目录里。对其对行打包即可直接分发。
1 | 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
1 | rpm -Uvh openssh*.rpm |
升级完成后,停掉sshd,然后再重新启动sshd,就是最新版了。如果这一步启动sshd失败,或者意外掉线了,不要害怕,可以利用之前一直在执行ping的那个ssh连接进行排查,避免造成升级失败后远程无法连接的情况
5、其它
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现
· 25岁的心里话