centos7升级openssh

1.官网下载最新的包

http://www.openssh.com/ 下载openssh官网

x11-ssh-askpass依赖文件 下载地址:http://www.jmknoble.net/software/x11-ssh-askpass/x11-ssh-askpass-1.2.4.1.tar.gz

https://src.fedoraproject.org/repo/pkgs/openssh/x11-ssh-askpass-1.2.4.1.tar.gz/

http://www.openssh.com/ 官网

image-20220609103524091

image-20220609103540458

2.制作rpm安装包参考 https://blog.csdn.net/u011394161/article/details/108995428
tar -zxvf openssh-8.8p1.tar.gz
mkdir -p /root/rpmbuild/{SOURCES,SPECS}
cp openssh-8.8p1/contrib/redhat/openssh.spec /root/rpmbuild/SPECS/
cp /speedec/download/openssh-8.8p1.tar.gz /speedec/download/x11-ssh-askpass-1.2.4.1.tar.gz /root/rpmbuild/SOURCES/
cd /root/rpmbuild/SPECS/
chown sshd: openssh.spec
rpmbuild -bb openssh.spec    --打包rpm (yum -y install rpm-build -y   命令不存在就安装)
                            如果构建缺少依赖 执行这个 yum install rpm-build openssl-devel pam-devel zlib zlib-devel perl krb5-devel pam-devel gcc make wget  libX11-devel xmkmf libXt-devel initscripts  -y

制作过程报错处理 https://www.jianshu.com/p/930c698ebf89

错误:构建依赖失败: openssl-devel < 1.1 被 openssh-8.3p1-1.el7.x86_64 需要
解决方法:

从openssh.spec 文件的103行注

vi  ~/rpmbuild/SPECS/openssh.spec   

释掉BuildRequires:openssl-devel < 1.1这一行

3.压缩构建好的包,开一个服务器升级openssh测试包是否有问题,没有问题在升级正式

cd /root/rpmbuild/RPMS/x86_64

压缩构建的包

tar -zcvf openssh8.8.tar.gz *

执行下面的升级步骤

4.升级步骤

升级前安装 xinetd telnet-server 2个软件包防止升级过后连不上服务器

yum install xinetd telnet-server -y

或者rpm安装

rpm -ivh  telnet-server-0.17-48.el6.x86_64.rpm xinetd-2.3.14-40.el6.x86_64.rpm  telnet-0.17-48.el6.x86_64.rpm

修改配置文件

vi etc/xinetd.conf 添加下面的内容

service telnet
{
    flags       = REUSE
    socket_type = stream
    wait        = no
    user        = root
    server      = /usr/sbin/in.telnetd
    log_on_failure += USERID
    disable     = no
}

启动服务xinetd服务

systemctl restart xinetd

新建普通用户test用于telnet远程连接并配置密码

useradd test  &&   echo 'speedit.cn' | passwd --stdin test

使用test用户telnet连接服务器(防火墙需要开放23端口)

 firewall-cmd --add-port=23/tcp --permanent

其他服务器测试telnet连接

[root@wlubak downlaod]# telnet 172.16.7.241 23
Trying 172.16.7.241...
Connected to 172.16.7.241.
Escape character is '^]'.

Kernel 3.10.0-1160.el7.x86_64 on an x86_64
wludb login: test
Password: 

开始备份升级

*一定注意查看 /etc/ssh/sshd_config 是否有这个配置 UsePAM yes,如果后后面也要加上
*备份/etc/pam.d/sshd 和/etc/ssh/sshd_config 文件
  mkdir /speedec/backup/
  cp -rf /etc/pam.d/sshd  /speedec/backup/sshd20220110
  cp -rf /etc/ssh/sshd_config   /speedec/backup/sshd_config20220110
  ll /speedec/backup/
  
*关闭selinux    
 临时关闭 setenforce 0
vi /etc/selinux/config   将SELINUX=enforcing改为SELINUX=disabled   永久关闭

*多开连接会话信息,防止升级过后连不上服务器

*解压zip文件更新安装里面的rpm文件rpm -Uvh *.rpm
 openssh-8.8p1-1.el7.x86_64.rpm
 openssh-clients-8.8p1-1.el7.x86_64.rpm
 openssh-debuginfo-8.8p1-1.el7.x86_64.rpm
 openssh-server-8.8p1-1.el7.x86_64.rpm
 openssh-askpass-8.8p1-1.el7.x86_64.rpm             --这个文件不要,不升级
 openssh-askpass-gnome-8.8p1-1.el7.x86_64.rpm       --这个文件不要,不升级


 升级 rpm -Uvh *.rpm
*修改 vi /etc/init.d/sshd
 在$SSHD $OPTIONS && success || failure这句话前面加一句:OPTIONS="-f /etc/ssh/sshd_config"


*修改 vi /etc/ssh/sshd_config 配置文件  如果没有这个配置直接添加
 设置 PermitRootLogin yes,取消注释,允许root直接ssh登录,核查监听端口是否与连接端口一致
 注意看看原来是否有这个配置,有就加上 UsePAM yes

*核查/etc/ssh/ssh*key 的权限是否为600
 chmod 600 /etc/ssh/ssh*key

*还原/etc/pam.d/sshd文件 
 cp -rf /speedec/backup/sshd20220110 /etc/pam.d/sshd

*重启sshd服务器
 systemctl daemon-reload     && systemctl restart sshd

*新开连接会话,测试是否能正常ssh,检查版本
 ssh -V