openssh升级到8.1

openssh升级到8.1

上次偷懒升级到8.0,结果还是扫出了漏洞,这次在升级一个版本,升级到8.1。

使用8.0的方法下载rpm进行升级出现了问题,需要大量的依赖包,下了两个多小时没搞定,所以使用源码编译吧。

1,准备

安装Openssh编译需要依赖包,可以在一台上做完整的依赖库,编译完成成后,直接打包拷贝到其他主机。

下载8.1的源码包上传到主机

2,安装

使用mini版本的centos7.4,使用下面的命令将所需的依赖包全部下载保存到本机,用来提供给其他主机使用

 yum install --downloadonly --downloaddir=/opt/test/rpm/ gcc openssl-devel pam-devel rpm-build

(1)安装依赖包

cd  /opt/test/rpm

rpm -Uvh *.rpm

(2)切换到上传openssh8.1的目录,解压,编译

tar -xvzf openssh-8.1p1.tar.gz

cd  openssh-8.1p1

./configure --prefix=/usr --sysconfdir=/etc/ssh --with-pam --with-zlib --with-md5-passwords --with-tcp-wrappers make && make install

make

make install

(3)给权限

cd /etc/ssh

chmod 600 sshd_config ssh_host_dsa_key ssh_host_key ssh_host_rsa_key

chmod 620 moduli

chmod 644 ssh_config ssh_host_dsa_key.pub ssh_host_key.pub ssh_host_rsa_key.pub

(4)允许root账户登录

 vi /etc/ssh/sshd_config

把下面的去注释

PermitRootLogin yes

(5)重启ssh

systemctl restart  sshd

这时候一般就成功,但是有时候会报错

3,错误

3月 10 09:42:54 localhost.localdomain systemd[1]: Failed to start OpenSSH server daemon.

3月 10 09:42:54 localhost.localdomain systemd[1]: Unit sshd.service entered failed state.

3月 10 09:42:54 localhost.localdomain systemd[1]: sshd.service failed.

状态不正常

现象:但是进程已启动,监听了22端口,而且可以正常连上去。

解释:出现命令挂起的原因就是 sshd在启动完成后,没有给systemd发消息,systemd就一直在那傻等,所以下面我们就修改源码,添加消息

4,源码修改

在源码目录下

找sshd.c这个主函数文件,找到调用server_accept_loop 这个函数的行,注意这个函数的定义也在这个文件,前加一行代码,如下:

/* Signal systemd that we are ready to accept connections */
 sd_notify(0, "READY=1");


/* Accept a connection and return in a forked child */
server_accept_loop(&sock_in, &sock_out,
&newsock, config_s);
}

在源文件开头几行添加引用头文件:

#include <systemd/sd-daemon.h>

5,编译安装

由于默认的依赖中,不包含sd_notify 这个函数,所以还需要安装依赖的包,和刚才一样,先把依赖包下载到本地给其他主机使用

   yum install --downloadonly --downloaddir=/opt/test/rpm/ systemd-devel

编译时还需要在makefile中指明,编辑文件:Makefile ,找到变量 LIBS,修改如下:

LIBS=-lcrypto -ldl -lutil -lz -lcrypt -lresolv -lsystemd

  make & make install

重启ssh服务即可,发现状态正常

6,依赖包和修改后的源码

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值