centos openssh升级(离线升级)

  • Post author:
  • Post category:其他


背景:漏洞扫描扫出一堆的 openssh相关的漏洞。解决方案是升级ssh版本。由于内网升级会遇到各种包缺失的情况。经过一凡周折。终于解决。网上文章很多。但很多有误导。现把自己经历整理。希望对小伙伴有帮助。

准备:
下载好需要的安装包:
gcc、openssl-devel、zlib、openssh-9.1p1

1.离线下载方法:

找一台系统相同的机器 使用 yumdownloader 下载,建义将不同的软件包下载到单独的文件夹中

yumdownloader --resolve --destdir=./ pkg1 pkg2

2.下载好后将软件打个包上传到要升有的服务器(我是将 gcc,openssh,openssl-deve zlib 各自打包,然后打包到h.zip 结构如下。可作参考

➜  h pwd
/root/temp/h
➜  h ll
总用量 74M
-rw-r--r--  1 root   root    49M 112 14:11 gcc.tar.gz
-rw-r--r--  1 root   root   1.8M 1010 08:49 openssh-9.1p1.tar.gz
-rw-r--r--  1 root   root   7.3M 112 00:29 openssl-deve.tar.gz
-rw-r--r--  1 root   root   1.5M 109 17:54 zlib-1.2.12.tar.gz
➜  h 

3.升级步骤

注意:



依次执行以下命令 先开两个终端。升级不成功不要退出。退出就连不上了。



以下步骤基本能跑通。。如果缺少依赖。就缺少什么下载什么。

网上其他文章说的要安装telnet 防止升级失败。这个我没有用。也升级成功了。酌情使用吧。

# 1.解压安装包
unzip h.zip
cd h
tar -xzf gcc.tar.gz && tar -xzf  openssh-9.1p1.tar.gz && tar -xzf  openssl-deve.tar.gz && tar -xzf zlib-1.2.12.tar.gz

# 2.安装gcc 
cd gcc/ && rpm -ivh ./*rpm --force

# 3.安装zlib
cd ../zlib-1.2.12 &&./configure --prefix=/usr/local/zlib && make && make install && echo '/usr/local/zlib/lib' >> /etc/ld.so.conf  && ldconfig -v 

# 4.安装 openssl-devel
cd ../openssl-deve/ && rpm -ivh ./*rpm --force

# 5.安装openssh
cd ../openssh-9.1p1/ && ./configure --prefix=/usr/local/openssh --with-zlib=/usr/local/zlib --with-ssl-dir=/usr/local/ssl && make && make install

# 6.配置sshd
echo 'PermitRootLogin yes' >>/usr/local/openssh/etc/sshd_config
echo 'PubkeyAuthentication yes' >>/usr/local/openssh/etc/sshd_config
echo 'PasswordAuthentication yes' >>/usr/local/openssh/etc/sshd_config
mv /etc/ssh/sshd_config /etc/ssh/sshd_config.bak
cp /usr/local/openssh/etc/sshd_config /etc/ssh/sshd_config
mv /usr/sbin/sshd /usr/sbin/sshd.bak
cp /usr/local/openssh/sbin/sshd /usr/sbin/sshd
mv /usr/bin/ssh /usr/bin/ssh.bak
cp /usr/local/openssh/bin/ssh /usr/bin/ssh
mv /usr/bin/ssh-keygen /usr/bin/ssh-keygen.bak
cp /usr/local/openssh/bin/ssh-keygen /usr/bin/ssh-keygen
mv /etc/ssh/ssh_host_ecdsa_key.pub /etc/ssh/ssh_host_ecdsa_key.pub.bak
cp /usr/local/openssh/etc/ssh_host_ecdsa_key.pub /etc/ssh/ssh_host_ecdsa_key.pub
cp -p contrib/redhat/sshd.init /etc/init.d/sshd
chmod +x /etc/init.d/sshd
chkconfig --add sshd
chkconfig sshd on
chmod 600 /etc/ssh/ssh_host_rsa_key
chmod 600 /etc/ssh/ssh_host_ecdsa_key
chown -R root.root /var/empty/sshd
chmod 744 /var/empty/sshd

# 7.重启服务 此处在当前终端可能会卡住。时间久了如果没有返回 可从另一个终端看查看版本。偿试连接 。如果连接成功。则说明升有成功。
service sshd restart
ssh -V



版权声明:本文为qq_34919833原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。