本文介绍如何通过openssh-9.0p1.tar.gz制作openssh的rpm安装包,并升级openssh到9.0。
1. 下载openssh-9.0p1.tar.gz
2. 编译成rpm
3. 备份原有ssh服务文件
4. 升级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包
# 1. 创建两个目录SOURCES和SPECS
mkdir -p /usr/src/redhat/{SOURCES,SPECS}
# 2. 进入SOURCES
cd /usr/src/redhat/SOURCES/
# 3. 将上面下载的openssh-9.0p1.tar.gz包上传到/usr/src/redhat/SOURCES/目录
# 4. 解压出整包 从里面提取出 openssh.spec 该文件
tar xfz openssh-9.0p1.tar.gz openssh-9.0p1/contrib/redhat/openssh.spec
# 5. 移动解压出来的 openssh.spec 文件到 SPECS 目录
mv openssh-9.0p1/contrib/redhat/openssh.spec ../SPECS/
# 6. 执行chown
chown sshd:sshd /usr/src/redhat/SPECS/openssh.spec
# 7. openssh.spec_def
cp /usr/src/redhat/SPECS/openssh.spec /usr/src/redhat/SPECS/openssh.spec_def
# 8. 修改几个配置选项 【可选项】,关掉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
# 9. 可以查看两个文件的不同之处(非必执行)
diff openssh.spec openssh.spec_def
# 10. 创建预编译目录
mkdir -p ~/rpmbuild/SOURCES/
cp /usr/src/redhat/SOURCES/openssh-9.0p1.tar.gz ~/rpmbuild/SOURCES/
# 11. 安装依赖
# 13. 查看编译后的目录结构
查看目录结构:tree -L 2 /root/rpmbuild/
如出现:
可以直接跳过,执行下面的
# 14. 查看rpm包
ll /root/rpmbuild/RPMS/x86_64/openssh-*
备份原有的openssh服务
# 1. 创建备份目录:mkdir -p /war/backup/openssh_def # 目录根据自己喜好随意起名即可
# 2. 进入:cd /war/backup/openssh_def
# 3. 将/etc/ssh目录下的所有文件压缩备份到当前目录:tar -cvzf etc_ssh.tar.gz /etc/ssh
# 4. 升级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`
开始升级
# 1. 执行升级命令
rpm -Uvh /root/rpmbuild/RPMS/x86_64/*.rpm --force --nodeps
# 5. 设置root用户可以远程连接
echo "PermitRootLogin yes" >> /etc/ssh/sshd_config
需要重启ssh服务
# 6. 其他操作
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