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/ 官网
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