如果ssh版本过低,最好先yum update openssh升级下到目前yum仓库的默认版本
yum update openssh -y
安装telnet-server以及xinetd
yum install xinetd telnet-server -y
如果下面telnet文件不存在的话,可以跳过更改,如果文件存在,请更改配置telnet可以root登录,把disable = no改成disable = yes
ll /etc/xinetd.d/telnet
配置telnet登录的终端类型,在/etc/securetty文件末尾增加一些pts终端,如下
pts/0
pts/1
pts/2
pts/3
启动telnet服务
systemctl start telnet.socket
systemctl start xinetd
查看telnet服务是否启动
netstat -lntp|grep 23
切换到telnet方式登录,以后的操作都在telnet终端下操作,防止ssh连接意外中断造成升级失败,端口号23.
升级需要几个组件,有些是和编译相关的等
yum install -y gcc gcc-c++ glibc make autoconf openssl openssl-devel pcre-devel pam-devel
安装pam和zlib等
yum install -y pam* zlib*
下载openssh包和openssl的包
openssh版本openssh-8.0p1.tar.gz:https://openbsd.hk/pub/OpenBSD/OpenSSH/portable/
openssl版本openssl-1.0.2r.tar.gz:https://ftp.openssl.org/source/
安装openssl
mkdir -p /data/tools
cd /data/tools/
tar xfz openssl-1.0.2r.tar.gz
备份下面2个文件或目录
mv /usr/bin/openssl /usr/bin/openssl_bak
mv /usr/include/openssl /usr/include/openssl_bak
编译安装新版本的openssl
配置、编译、安装3个命令一起执行&&符号表示前面的执行成功才会执行后面的
cd /data/tools/openssl-1.0.2r/
./config shared && make && make install
命令执行完毕,echo $?查看下最后的make install是否有报错,0表示没有问题
echo $?
下面2个文件或者目录做软链接 (刚才前面的步骤mv备份过原来的)
ln -s /usr/local/ssl/bin/openssl /usr/bin/openssl
ln -s /usr/local/ssl/include/openssl /usr/include/openssl
命令行执行下面2个命令加载新配置
echo "/usr/local/ssl/lib" >> /etc/ld.so.conf
/sbin/ldconfig
查看确认版本。
openssl version
安装openssh
上传openssh的tar包并解压
cd /data/tools/
tar xfz openssh-8.0p1.tar.gz
命令行删除原先ssh的配置文件和目录
rm -rf /etc/ssh/*
配置、编译、安装
cd /data/tools/openssh-8.0p1
./configure --prefix=/usr/ --sysconfdir=/etc/ssh --with-openssl-includes=/usr/local/ssl/include --with-ssl-dir=/usr/local/ssl --with-zlib --with-md5-passwords --with-pam && make && make install
安装完毕 检查下结果
echo $?
修改/etc/ssh/sshd_config配置文件最终为如下内容,其他的不要动
从原先的解压的包中拷贝一些文件到目标位置(如果目标目录存在就覆盖)
cp -a contrib/redhat/sshd.init /etc/init.d/sshd
cp -a contrib/redhat/sshd.pam /etc/pam.d/sshd.pam
chmod +x /etc/init.d/sshd
chkconfig --add sshd
systemctl enable sshd
把原先的systemd管理的sshd文件删除或者移走或者删除,不移走的话影响我们重启sshd服务
mv /usr/lib/systemd/system/sshd.service /data/
设置sshd服务开机启动
chkconfig sshd on
使用systemd方式测试启停服务
systemctl stop sshd
systemctl start sshd
systemctl restart sshd
测试版本
ssh -V
关闭telnet服务
systemctl stop xinetd.service
systemctl stop telnet.socket