安装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服务开机启动
systemctl enable telnet.socket
- 启动Telnet服务
systemctl start telnet.socket
*注意:
- 若防火墙是已经禁用。请略过防火墙相关命令
- 若防火墙是暂时停止。建议先启动防火墙,添加访问策略!否则重装过程需要服务器重启,重启后可能因为防火墙原因无法通过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账户进行操作。如果直接使用SSH链接进行操作,将可能会导致服务器无法连接的后果!!!
- 安装相关的依赖项,如有遗漏再次安装
yum install -y vim gcc gcc-c++ glibc make autoconf openssl openssl-devel pcre-devel pam-devel zlib-devel tcp_wrappers-devel tcp_wrappers libedit-devel perl-IPC-Cmd wget tar lrzsz nano
yum -y install perl-IPC-Cmd
yum -y install pam-devel
- 安装相关的依赖项,如有遗漏再次安装
yum -y install gcc pam-devel zlib-devel openssl-devel net-tools
- 进入本地临时目录
cd /usr/local/src
- 下载源代码包
wget https://www.zlib.net/zlib-1.3.1.tar.gz
wget https://www.openssl.org/source/openssl-3.3.1.tar.gz
wget https://cdn.openbsd.org/pub/OpenBSD/OpenSSH/portable/openssh-9.8p1.tar.gz
说明:以上安装包下载可能需要耗费不少时间!如果下载速度很慢,可以考虑去我个人分享的网盘下载。 - 解压缩代码包
tar -zxvf zlib-1.3.1.tar.gz
tar -zxvf openssl-3.3.1.tar.gz
tar -zxvf openssh-9.8p1.tar.gz
安装Zlib
- 进入zlib-1.3.1目录
cd /usr/local/src/zlib-1.3.1
- 配置
./configure --prefix=/usr/local/src/zlib
- 编译及安装
make -j 4 && make test && make install
安装OpenSSL
- 进入openssl-3.3.1目录
cd /usr/local/src/openssl-3.3.1
- 配置
./config --prefix=/usr/local/src/openssl
- 编译及安装
make -j 4 && make install
- 配置
mv /usr/bin/openssl /usr/bin/oldopenssl
ln -s /usr/local/src/openssl/bin/openssl /usr/bin/openssl
ln -s /usr/local/src/openssl/lib64/libssl.so.3 /usr/lib64/libssl.so.3
ln -s /usr/local/src/openssl/lib64/libcrypto.so.3 /usr/lib64/libcrypto.so.3
- 更新动态库
vim /etc/ld.so.conf
添加 /usr/local/src/openssl/lib64 到文件中。并删除类似的旧行。我这边实际1情况是删除了 /usr/local/openssl/lib64
ldconfig
- 查看更新后的版本
openssl version -v
卸载旧版本OpenSSH
- 卸载旧版本OpenSSH服务
yum remove -y openssh
- 清理残余文件
rm -rf /etc/ssh/*
安装最新版OpenSSH服务
- 进入openssh-9.8p1目录
cd /usr/local/src/openssh-9.8p1
- 配置
./configure --prefix=/usr/local/src/ssh --sysconfdir=/etc/ssh --with-pam --with-ssl-dir=/usr/local/src/openssl --with-zlib=/usr/local/src/zlib
- 编译及安装
make -j 4 && make install
- 查看目录版本
/usr/local/src/ssh/bin/ssh -V
- 复制新ssh文件
cp -rf /usr/local/src/openssh-9.8p1/contrib/redhat/sshd.init /etc/init.d/sshd
cp -rf /usr/local/src/openssh-9.8p1/contrib/redhat/sshd.pam /etc/pam.d/sshd
cp -rf /usr/local/src/ssh/sbin/sshd /usr/sbin/sshd
cp -rf /usr/local/src/ssh/bin/ssh /usr/bin/ssh
cp -rf /usr/local/src/ssh/bin/ssh-keygen /usr/bin/ssh-keygen
- 允许root登录
echo 'PermitRootLogin yes' >> /etc/ssh/sshd_config
echo 'PasswordAuthentication yes' >> /etc/ssh/sshd_config
安装后的收尾
- 重启sshd服务
/etc/init.d/sshd restart
- 查看服务运行状态
/etc/init.d/sshd status
- 添加开机启动
chkconfig --add sshd
- 查看升级后ssh版本
ssh -V
关闭Telnet服务
- 停止Telnet 服务
systemctl stop telnet.socket
- 禁用Telnet服务开机启动
systemctl disable telnet.socket
删除临时用户
- 使用命令删除临时用户
userdel -rf tempuser
提示:这篇文章只作为学习记录,感谢原作者分享。
参考链接:
https://blog.csdn.net/Jerry_zhy/article/details/141217681