CentOS 7.x 从openssh7.4p1 升级到openssh8.8p1
提示:
1、针对openssh版本过低导致漏洞的问题的升级
2、建议先阅读-----五、为了防止升级失败,可以在升级之前安装telnet服务,通过Telnet连接服务器进行升级
3、openssh-8.8p1+openssl-1.1.1h+zlib-1.2.12搭配亲测可以升级成功,可以远程。
4、在升级过程中输入的命令,如果弹出文章中没有涉及的错误,请先自行解决后再继续执行后续步骤。
cat /etc/redhat-release
ssh -V
(有条件的可以)直接yum安装即可
yum install openssh -y
yum -y install gcc gcc-c++ kernel-devel
zlib-1.2.12.tar.gz(2022 年 3 月 27 日) 下载地址:http://www.zlib.net/zlib-1.2.12.tar.gz
openssl-1.1.1h.tar.gz(2020 年 9月 22 日) 下载地址:https://www.openssl.org/source/openssl-1.1.1h.tar.gz
其他版本的openssl 有待测试
openssh-8.8p1.tar.gz(2021 年 9月 26 日) 下载地址:http://ftp.openbsd.org/pub/OpenBSD/OpenSSH/portable/openssh-8.8p1.tar.gz
tar xf openssh-8.8p1.tar.gz -C /usr/local/src/
tar xf openssl-1.1.1h.tar.gz -C /usr/local/src/
tar xf zlib-1.2.12.tar.gz -C /usr/local/src/
ll /usr/local/src/
cd /usr/local/src/zlib-1.2.12/
./configure --prefix=/usr/local/zlib && make -j 4 && make install
等待安装完毕,然后再命令行输入 echo $? 回车
输出0 说明没有问题。
cd /usr/local/src/openssl-1.1.1h/
./config --prefix=/usr/local/ssl -d shared
出现下图则说明成功了;
make -j 4 && make install
等待安装完毕,然后在命令行输入 echo $? 回车
输出0 说明没有问题。
echo ‘/usr/local/ssl/lib’ >> /etc/ld.so.conf
ldconfig -v
1、mv /etc/ssh /etc/ssh.bak 备份原有的ssh文件
2、cd /usr/local/src/openssh-8.8p1/
3、./configure --prefix=/usr/local/openssh --sysconfdir=/etc/ssh --with-ssl-dir=/usr/local/ssl --with-zlib=/usr/local/zlib
4、make -j 4 && make install
等待安装完毕,然后在命令行输入 echo $? 回车
输出0 说明没有问题。
echo “X11Forwarding yes” >> /etc/ssh/sshd_config
echo “X11UseLocalhost no” >> /etc/ssh/sshd_config
echo “XAuthLocation /usr/bin/xauth” >> /etc/ssh/sshd_config
echo “UseDNS no” >> /etc/ssh/sshd_config
echo ‘PermitRootLogin yes’ >> /etc/ssh/sshd_config
echo ‘PubkeyAuthentication yes’ >> /etc/ssh/sshd_config
echo ‘PasswordAuthentication yes’ >> /etc/ssh/sshd_config
需要添加X11Forwarding yes开启X11转发,调用图形界面,如oracle安装等操作需要图形界面
***必须添加X11UseLocalhost no 和 XAuthLocation /usr/bin/xauth 这两项,否则X11转发不好使
验证X11转发是否好使,xhost + 出现下面的是可以正常使用的
出现下面的内容是不能正常使用的
备份 /etc/ssh 原有文件,并将新的配置复制到指定目录
mv /usr/sbin/sshd /usr/sbin/sshd.bak
cp -rf /usr/local/openssh/sbin/sshd /usr/sbin/sshd
mv /usr/bin/ssh /usr/bin/ssh.bak
cp -rf /usr/local/openssh/bin/ssh /usr/bin/ssh
mv /usr/bin/ssh-keygen /usr/bin/ssh-keygen.bak
cp -rf /usr/local/openssh/bin/ssh-keygen /usr/bin/ssh-keygen
直接systemctl start sshd,启动不起来,报错,但用sshd -t检查也没有啥错误,就提示timeout
问题解决:先停掉sshd服务,将systemctl原服务器删除,使用安装包里自带的sshd.init,复制到/etc/init.d/sshd,重启即可
systemctl stop sshd.service
rm -rf /lib/systemd/system/sshd.service
systemctl daemon-reload
cp /usr/local/src/openssh-8.4p1/contrib/redhat/sshd.init /etc/init.d/sshd
/etc/init.d/sshd restart
systemctl status sshd
启动不起来,可以使用/etc/init.d/sshd restart重启即可
添加开机启动
chkconfig --add sshd
yum install xinetd telnet-server -y
vim /etc/xinetd.d/telnet
service telnet
{
disable = yes
flags = REUSE
socket_type = stream
wait = no
user = root
server = /usr/sbin/in.telnetd
log_on_failure += USERID
}
配置telnet登录的终端类型,在/etc/securetty文件末尾增加一些pts终端,如下
vim /etc/securetty
pts/0
pts/1
pts/2
pts/3
tail -5 /etc/securetty
xvc0
pts/0
pts/1
pts/2
pts/3
systemctl enable xinetd
systemctl enable telnet.socket
systemctl start telnet.socket
systemctl start xinetd
netstat -lntp|grep 23
netstat可能会报错,原因是没有安装net-tools工具包
yum install net-tools -y
再次查看
切换到telnet方式登录,以后的操作都在telnet终端下操作,防止ssh连接意外中断造成升级失败
systemctl disable xinetd.service
systemctl stop xinetd.service
systemctl disable telnet.socket
systemctl stop telnet.socket
netstat -lntp
卸载yum remove telnet-server xinetd -y