因生成环境服务器安全扫描出的漏洞问题,只能升级最新的openssh,适用于centos6和centos7的升级使用。
一、编译前工作
openssl版本要求1.0.1以上,zlib版本要求1.1.4以上
备份原先ssh配置文件
cp /usr/bin/ssh /usr/bin/ssh_bakcp /usr/sbin/sshd /usr/sbin/sshd_bakcp /etc/ssh/sshd_config /etc/ssh/sshd_config_bakcp /etc/init.d/sshd /etc/init.d/sshd_bak下载openssh的官网地址
https://cdn.openbsd.org/pub/OpenBSD/OpenSSH/portable/
二、编辑安装openssh
openssh编译参数简述
--prefix=PREFIX #安装到哪个路径,默认[/usr/local]--sysconfdir=DIR #配置路径,默认[PREFIX/etc] --mandir=DIR #帮助文档路径--with-md5-passwords #开启使用MD5的密码--with-zlib=PATH #指定zlib的安装路径--with-ssl-dir=PATH #指定openssl的安装路径tar zxf openssh-8.7p1.tar.gzcd openssh-8.7p1./configure --prefix=/usr/local/openssh-8.7p1/ --sysconfdir=/etc/ssh/ --with-md5-passwords --mandir=/usr/share/manmake -j 4 && make install删除旧的ssh命令
rm -f /usr/libexec/openssh/sftp-serverrm -f /usr/bin/ssh-copy-id rm -f /usr/bin/ssh-addrm -f /usr/bin/ssh-agentrm -f /usr/bin/ssh-keygenrm -f /usr/bin/ssh-keyscanrm -f /usr/bin/scprm -f /usr/bin/sftprm -f /usr/bin/sshrm -f /usr/sbin/sshd替换新的ssh命令和常用工具,常用工具都在解压包内复制到系统路径下。
cp -p sftp-server /usr/libexec/openssh/cp contrib/ssh-copy-id /usr/bin/ssh-copy-id cp -p /usr/local/openssh-8.7p1/bin/* /usr/bincp -p /usr/local/openssh-8.7p1/sbin/* /usr/sbin设置权限
chmod -R 755 /usr/local/openssh-8.7p1/chmod -R 755 /usr/bin/ssh*chmod -R 755 /usr/bin/scpchmod -R 755 /usr/bin/sftpchmod -R 755 /usr/sbin/ssh*复制SSH的启动脚本和设置开机自启
cp -p contrib/redhat/sshd.init /etc/init.d/sshdchmod +x /etc/init.d/sshdchown root.root /etc/init.d/sshdchkconfig --add sshdSSH重启之前可以先测试配置文件是否有问题,防止重启SSH失败,远程连接断了,如果是本地终端连接可以直接重启
/usr/local/openssh-8.7p1/sbin/sshd -t -f /etc/ssh/sshd_config前面如果没有报错就可以重启SSH了
/etc/init.d/sshd restart三、特别说明centos7可能会因为/usr/lib/systemd/system/sshd.service文件而导致重启失败,因此写了if简单判断下
if [ -f /usr/lib/systemd/system/sshd.service ];then cat >/usr/lib/systemd/system/sshd.service