Centos7编译openssh8.9p1


升级生产服务器的ssh版本,记录Centos7编译openssh8.9p1

一,编译源码,生成rpm包

$sudo yum install rpm-build gcc gcc-c++ glibc glibc-devel openssl-devel opensshl prce pcre-devel zlib zlib-devel make wget krb5-devel pam-devel libX11-devel xmkmf libXt-devel initscripts libXt-devel imake gtk2-devel lrzsz -y  //依赖

$sudo mkdir -pv /root/rpmbuild/{BUILD,BUILDROOT,RPMS,SOURCES,SPECS,SRPMS}   //目录准备

$sudo wget http://mirror.aarnet.edu.au/pub/OpenBSD/OpenSSH/portable/openssh-8.9p1.tar.gz -O /root/rpmbuild/SOURCES/openssh-8.9p1.tar.gz   //下载源码包

解压spec编译文件

cd /root/rpmbuild/SOURCES/

tar -xvf openssh-8.9p1.tar.gz openssh-8.9p1/contrib/redhat/openssh.spec

mv openssh-8.9p1 /root/rpmbuild/SPECS/

配置spec编译文件

1.不生成askpass包

cd /root/rpmbuild/SPECS/openssh-8.9p1/contrib/redhat/

sed -i -e "s/%global no_gnome_askpass 0/%global no_gnome_askpass 1/g" openssh.spec

sed -i -e "s/%global no_x11_askpass 0/%global no_x11_askpass 1/g" openssh.spec

//如果生成askpass包,需要/root/rpmbuild/SOURCES/x11-ssh-askpass-1.2.4.1.tar.gz,下载链接Index of /repo/pkgs/openssh/x11-ssh-askpass-1.2.4.1.tar.gz

2.解决openssl-devel < 1.1 报错

sed -i '/openssl-devel < 1.1/s/^/#/' openssh.spec

3.编译openssh源码

cd /root/rpmbuild/ && rpmbuild -bb /root/rpmbuild/SPECS/openssh-8.9p1/contrib/redhat/openssh.spec 

4.无报错示意编译成功

$sudo ll /root/rpmbuild/RPMS/x86_64/     //查看编译生成的rpm包

二,升级openssh

1.开启服务器的telnet,避免升级异常不能登录服务器

2.selinux设置宽松模式,或禁用。

3.备份sshd文件

cp /etc/ssh/sshd_config /etc/ssh/sshd_config_7.4p1_bak

cp /etc/pam.d/sshd /etc/pam.d/sshd_7.4p1_pam_bak

4. 安装rpm

rpm -Uvh /root/rpmbuild/RPMS/x86_64/openssh-*.rpm --nodeps

5.更改ssh目录的key文件权限,避免重启ssh报错或重启不成功

chmod 600 /etc/ssh/ssh_host*key

sed -i "s/UsePAM yes/UsePAM no/" /etc/ssh/sshd_config

6.重启sshd,查看openssh版本

systemctl restart sshd

systemctl status sshd.service

strings /usr/sbin/sshd|grep OpenSSH

sshd -V

结束。

相关