本文介绍如何通过openssh-9.0p1.tar.gz制作openssh的rpm安装包,并升级openssh到9.0。
-
下载openssh-9.0p1.tar.gz
-
编译成rpm
-
备份原有ssh服务文件
-
升级ssh版本
制作openssh的rpm包以及安装过程中出现的问题可查看以下文章:https://www.cnblogs.com/JimmyThomas/p/16257866.html
OpenSSH需要依赖ZLIB和LibreSSL(替换OpenSSL),因此需要从官网下载三者的源码包。
版本及官网链接:
zlib-1.2.12.tar.gz http://www.zlib.net/
libressl-3.5.2.tar.gz https://www.libressl.org/
openssh-9.0p1.tar.gz http://www.openssh.org/
如有需要可自行升级
下载
请从官方网站或者国内镜像下载相关安装包。
官网下载地址:http://www.openssh.com/releasenotes.html
国内镜像下载地址:https://mirrors.aliyun.com/pub/OpenBSD/OpenSSH/portable/
百度网盘:https://pan.baidu.com/s/1gqpH2xeOkYHJ0CiztbmqoQ
提取码:imfg
-
openssh-9.0.tar.gz(适用于BSD)
-
openssh-9.0p1.tar.gz(适用于Linxu)
制作RPM包
- 创建两个目录SOURCES和SPECS
mkdir -p /usr/src/redhat/{SOURCES,SPECS}
- 进入SOURCES
cd /usr/src/redhat/SOURCES/
-
将上面下载的openssh-9.0p1.tar.gz包上传到/usr/src/redhat/SOURCES/目录
-
解压出整包 从里面提取出 openssh.spec 该文件
tar xfz openssh-9.0p1.tar.gz openssh-9.0p1/contrib/redhat/openssh.spec
- 移动解压出来的 openssh.spec 文件到 SPECS 目录
mv openssh-9.0p1/contrib/redhat/openssh.spec ../SPECS/
- 执行chown
chown sshd:sshd /usr/src/redhat/SPECS/openssh.spec
- openssh.spec_def
cp /usr/src/redhat/SPECS/openssh.spec /usr/src/redhat/SPECS/openssh.spec_def
- 修改几个配置选项 【可选项】,关掉no_gnome_askpass no_x11_askpass这两个参数
sed -i -e “s/%define no_gnome_askpass 0/%define no_gnome_askpass 1/g” /usr/src/redhat/SPECS/openssh.spec
sed -i -e “s/%define no_x11_askpass 0/%define no_x11_askpass 1/g” /usr/src/redhat/SPECS/openssh.spec
- 可以查看两个文件的不同之处(非必执行)
diff openssh.spec openssh.spec_def
- 创建预编译目录
mkdir -p ~/rpmbuild/SOURCES/
cp /usr/src/redhat/SOURCES/openssh-9.0p1.tar.gz ~/rpmbuild/SOURCES/
- 安装依赖
yum install rpm-build gcc make wget openssl-devel krb5-devel pam-devel libX11-devel xmkmf libXt-devel
- 执行编译
cd /usr/src/redhat/SPECS/
rpmbuild -ba openssh.spec
- 查看编译后的目录结构
查看目录结构:tree -L 2 /root/rpmbuild/
如出现:
可以直接跳过,执行下面的
- 查看rpm包
ll /root/rpmbuild/RPMS/x86_64/openssh-*
备份原有的openssh服务
-
创建备份目录:mkdir -p /war/backup/openssh_def # 目录根据自己喜好随意起名即可
-
进入:cd /war/backup/openssh_def
-
将/etc/ssh目录下的所有文件压缩备份到当前目录:tar -cvzf etc_ssh.tar.gz /etc/ssh
-
升级rpm 升级后会修改/etc/pam.d/sshd 文件,需要备份此文件,升级完还原此文件。
cp /etc/pam.d/sshd /etc/pam.d/system-auth .
cp -p /etc/pam.d/sshd /etc/pam.d/sshd_date +%Y%m%d
cp -p /etc/pam.d/system-auth /etc/pam.d/system-auth_date +%Y%m%d
开始升级
- 执行升级命令
rpm -Uvh /root/rpmbuild/RPMS/x86_64/*.rpm –force –nodeps
- 把新的 /etc/pam.d/sshd文件备份,并恢复原来版本的 /etc/pam.d/sshd
cp -p /etc/pam.d/sshd /root/sshd.afterupgrade
cp /war/backup/openssh_def/sshd /etc/pam.d/
- 开启PAM
vi /etc/ssh/sshd_config
UsePAM yes
注意:
本人测试开启后能连接上,
但是如果开启后导致连接不上就需要关闭了
- 重启sshd服务
CentOS 6:service sshd restart
CentOS 7:systemctl restart sshd
- 设置root用户可以远程连接
echo “PermitRootLogin yes” >> /etc/ssh/sshd_config
需要重启ssh服务
- 其他操作
1 # cp contrib/redhat/sshd.pam /etc/pam.d/sshd
2 # pam有研究的可以启用下,本人不会配置,开了pam会导致ssh连不上
3 # echo "UsePAM no" >> /etc/ssh/sshd_config
4 # 允许root用户通过ssh登录
5 # echo "PermitRootLogin yes" >> /etc/ssh/sshd_config
6 # 开启SSH秘钥登录
7 # echo "PubkeyAuthentication yes" >> /etc/ssh/sshd_config
8 # 开启远程GUI支持
9 # echo "X11Forwarding yes" >> /etc/ssh/sshd_config
10
11 # 注册服务,并设置开机启动
12 # cp -p contrib/redhat/sshd.init /etc/init.d/sshd
13 # chown root.root /etc/init.d/sshd
14 # chmod +x /etc/init.d/sshd
15 # chkconfig --add sshd
16 # chkconfig sshd on
17 # chkconfig --list sshd
18 # systemctl restart sshd
cp -p contrib/redhat/sshd.init /etc/init.d/sshd
chown root.root /etc/init.d/sshd
chmod +x /etc/init.d/sshd
chkconfig –add sshd
chkconfig sshd on
chkconfig –list sshd
systemctl restart sshd
Original: https://www.cnblogs.com/JimmyThomas/p/16257161.html
Author: JimmyThomas
Title: Centos7.9编译OpenSSH的rpm安装包并升级OpenSSH
原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/582514/
转载文章受原作者版权保护。转载请注明原作者出处!