安装Telnet服务
为了避免升级OpenSSH导致服务器不可连接。需要先下载安装Telnet组件。升级期间使用Telnet作为升级期间的服务器连接方式。
- 先查询telnet是否安装
rpm -qa telnet
- 如果没有安装则执行以下语句安装
yum -y install telnet
- 查询telnet-server是否安装
rpm -qa telnet-server
- 如果没有安装则执行以下语句安装
yum -y install telnet-server
- 防火墙状态放行telent
firewall-cmd --permanent --add-port=23/tcp --zone=public
- 防火墙重新载入
firewall-cmd --reload
*注意:
- 若防火墙是已经禁用。请略过防火墙相关命令
- 若防火墙是暂时停止。建议先启动防火墙,添加访问策略!否则重装过程需要服务器重启,重启后可能因为防火墙原因无法通过telnet访问服务器。如果OpenSSH又安装失败,将导致服务器不可连接。附:防火墙启动命令
systemctl start firewalld
创建使用Telnet服务的账户
因为默认情况root 不能直接登录telnet
创建一个新用户用于登录elnet服务,这个账号升级完成后需要进行删除。
- 创建账号
sudo useradd tempuser
- 设置密码
sudo passwd tempuser
输入一个密码,例如:Mycar=998
后续访问的时候,通过XShell工具连接
先用tempuser登录后,再使用
su root
切换到root用户。
升级OpenSSH
以下命令是使用Telnet连接后,切换到root账户进行操作。
- 安装相关命令依赖
yum install -y rpm-build gcc gcc-c++ glibc glibc-devel openssl-devel openssl pcre-devel zlib zlib-devel make wget krb5-devel pam-devel libX11-devel xmkmf libXt-devel initscripts libXt-devel imake gtk2-devel lrzsz
- 备份原SSH配置
cp -rp /etc/ssh /etc/ssh.bak
- 停止SSH服务
systemctl stop sshd
- 查看安装的ssh
rpm -qa | grep openssh
- 卸载rpm安装的ssh
yum remove openssh*
- 创建制作rpm相关目录
mkdir -pv /root/rpmbuild/{BUILD,BUILDROOT,RPMS,SOURCES,SPECS,SRPMS}
- 下载openssh和x11-ssh-askpass安装包
cd /root/rpmbuild/SOURCES/
wget https://mirrors.aliyun.com/pub/OpenBSD/OpenSSH/portable/openssh-9.3p1.tar.gz
tar -xf openssh-9.3p1.tar.gz
wget https://src.fedoraproject.org/repo/pkgs/openssh/x11-ssh-askpass-1.2.4.1.tar.gz
- 编辑编译配置文件
cp openssh-9.3p1/contrib/redhat/openssh.spec /root/rpmbuild/SPECS/
cd /root/rpmbuild/SPECS/
不生产ask包
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
修改openssl-devel的报错
sed -i '/openssl-devel < 1.1/s/^/#/' openssh.spec
修改PreReq的报错
sed -i '/PreReq:/s/^/#/' openssh.spec
- 编译文件
rpmbuild -ba openssh.spec
运行后,/root/rpmbuild/RPMS/x86_64/目录应该有openssh-9.3p1-1.el7.x86_64.rpm、openssh-debuginfo-9.3p1-1.el7.x86_64.rpm、openssh-clients-9.3p1-1.el7.x86_64.rpm、openssh-server-9.3p1-1.el7.x86_64.rpm四个文件。 - 升级OpenSSH
cd /root/rpmbuild/RPMS/x86_64/
yum localinstall openssh-9.3p1-1.el7.x86_64.rpm openssh-clients-9.3p1-1.el7.x86_64.rpm openssh-server-9.3p1-1.el7.x86_64.rpm -y
- 验证OpenSSH是否升级成功
修改文件权限
chmod 600 /etc/ssh/ssh_host_rsa_key
chmod 600 /etc/ssh/ssh_host_ecdsa_key
chmod 600 /etc/ssh/ssh_host_ed25519_key
检查是否有配置错误
sshd -t
如果/etc/pam.d/sshd配置丢失,从其他机器拷贝一份配置过来
注释掉/etc/pam.d/password-auth /etc/pam.d/system-auth中uid >= 1000的行,否则root不能登陆
sed -i '/uid < 1000/s/^/#/' /etc/pam.d/password-auth
sed -i '/uid < 1000/s/^/#/' /etc/pam.d/system-auth
修改/etc/ssh/sshd_config
sed -i '/^#PermitRootLogin yes/s/^#//' /etc/ssh/sshd_config
重启sshd服务
systemctl restart sshd
添加到自启动
chkconfig --add sshd
查看升级后的ssh版本
重新使用SSH连接后,查看SSH版本
ssh -V
看到对应的版本为正常
如果有条件,建议重启服务器一下看SSH是否能正常登录。
关闭Telnet服务
- 停止Telnet 服务
systemctl stop telnet.socket
- 禁用Telnet服务开机启动
systemctl disable telnet.socket
删除临时用户
- 使用命令删除临时用户
userdel -rf tempuser
可能遇到的其他问题
-
编译安装过程提示:Protected multilib versions: zlib-1.2.7-20.el7_9.x86_64 != zlib-1.2.7-19.el7_9.i686
执行如下命令:
yum install -y zlib zlib-devel --setopt=protected_multilib=false
-
编译安装过程提示:configure: error: PAM headers not found
执行如下命令:
yum -y install pam-devel
原文链接:https://www.cnblogs.com/cynriczgc/p/17255368.html
标签:p1,openssh,devel,升级,etc,ssh,rpm,OpenSSH9.3 From: https://www.cnblogs.com/kewenpu/p/17377647.html