百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 热门文章 > 正文

openssh openssl编译更新

bigegpt 2024-08-10 12:05 6 浏览

方案:

保留原openssh 和openssl不变,新编译openssh和openssl,测试完成后逐步替换原版本。

生产环境小心。

操作系统

root@debian138:/etc/init.d# uname -a

Linux debian138 4.9.0-6-amd64 #1 SMP Debian 4.9.82-1+deb9u3 (2018-03-02) x86_64 GNU/Linux

root@debian138:/etc/init.d# lsb_release -a

No LSB modules are available.

Distributor ID: Debian

Description: Debian GNU/Linux 9.4 (stretch)

Release: 9.4

Codename: stretch

资源下载

如果gcc没有先下载

https://packages.debian.org/stretch/amd64/gcc/download

gcc_6.3.0-4_amd64.deb

如果没有Make先下载

https://packages.debian.org/stretch/amd64/make/download

make_4.1-9.1_amd64.deb

zlib1g-dev-需下载

编译openssl时需要:

zlib1g-dev_1.2.8.dfsg-5+deb9u1_amd64.deb

##redhat系列 yum install zlib-devel -y

需要pam开发包

apt install libpam0g-dev

##redhat系列 yum install pam-devel -y ,yum install tcp_wrappers-devel -y

以上过程略。

安装

Openssl新版本l-1.1.1n

自定义到/opt/openssl-1.1.1n。

Configure

root@debian138:~# tar -xzvf openssl-1.1.1n.tar.gz

cd openssl-1.1.1n

root@debian138:~/openssh-8.9p1# pwd

/root/openssl-1.1.1n

root@debian138:~/openssl-1.1.1n# ./config --prefix=/opt/openssl-1.1.1n --openssldir=/opt/openssl-1.1.1n/openssl zlib-dynamic shared -fPIC

Operating system: x86_64-whatever-linux2

Configuring OpenSSL version 1.1.1n (0x101010efL) for linux-x86_64

Using os-specific seed configuration

Creating configdata.pm

Creating Makefile

**********************************************************************

*** ***

*** OpenSSL has been successfully configured ***

*** ***

*** If you encounter a problem while building, please open an ***

*** issue on GitHub <https://github.com/openssl/openssl/issues> ***

*** and include the output from the following command: ***

*** ***

*** perl configdata.pm --dump ***

*** ***

*** (If you are new to OpenSSL, you might want to consult the ***

*** 'Troubleshooting' section in the INSTALL file first) ***

*** ***

Make

#make

。。

Make test

#make test

。。。

make install

。。。

pt/openssl-1.1.1n/share/doc/openssl/html/man7/X25519.html

/opt/openssl-1.1.1n/share/doc/openssl/html/man7/X448.html -> /opt/openssl-1.1.1n/share/doc/openssl/html/man7/X25519.html

/opt/openssl-1.1.1n/share/doc/openssl/html/man7/x509.html

库文件目录添加

root@debian138:/opt/openssl-1.1.1n# echo '/opt/openssl-1.1.1n/lib' >> /etc/ld.so.conf

root@debian138:/opt/openssl-1.1.1n# ldconfig

。。

root@debian138:/opt/openssl-1.1.1n/lib# /opt/openssl-1.1.1n/bin/openssl version

../bin/openssl: /usr/lib/x86_64-linux-gnu/libssl.so.1.1: version `OPENSSL_1_1_1' not found (required by ../bin/openssl)

../bin/openssl: /usr/lib/x86_64-linux-gnu/libcrypto.so.1.1: version `OPENSSL_1_1_1' not found (required by ../bin/openssl)

---

cp /opt/openssl-1.1.1n/lib/libssl.so.1.1 /usr/lib/x86_64-linux-gnu/libssl.so.1.1

cp /opt/openssl-1.1.1n/lib/libcrypto.so.1.1 /usr/lib/x86_64-linux-gnu/libcrypto.so.1.1

root@debian138:/opt/openssl-1.1.1n/lib# /opt/openssl-1.1.1n/bin/openssl version

OpenSSL 1.1.1n 15 Mar 2022

版本已到新版本:

/opt/openssl-1.1.1n/bin/openssl version -a

OpenSSL 1.1.1n 15 Mar 2022

built on: Thu Apr 7 04:31:15 2022 UTC

platform: linux-x86_64

options: bn(64,64) rc4(16x,int) des(int) idea(int) blowfish(ptr)

。。。

openssh-8.9p1

系统自带ssh

root@debian138:~/openssh-8.9p1# ssh -V

OpenSSH_7.4p1 Debian-10+deb9u6, OpenSSL 1.0.2u 20 Dec 2019

Configre

自定义到/opt/openssh8.9:

./configure --prefix=/opt/openssh8.9 --with-ssl-dir=/opt/openssl-1.1.1n --with-pam

。。。

PAM is enabled. You may need to install a PAM control file

for sshd, otherwise password authentication may fail.

Example PAM control files can be found in the contrib/

subdirectory

Make

#make

。。

cc -g -O2 -pipe -Wall -Wextra -Wpointer-arith -Wuninitialized -Wsign-compare -Wformat-security -Wsizeof-pointer-memaccess -Wno-pointer-sign -Wno-unused-parameter -Wno-unused-result -Wmisleading-indentation -fno-strict-aliasing -D_FORTIFY_SOURCE=2 -ftrapv -fno-builtin-memset -fstack-protector-strong -fPIE -I. -I. -I/opt/openssl-1.1.1n/include -D_XOPEN_SOURCE=600 -D_BSD_SOURCE -D_DEFAULT_SOURCE -DSSHDIR=\"/opt/openssh8.9/etc\"

...

cc -o ssh-sk-helper ssh-sk-helper.o ssh-sk.o sk-usbhid.o -L. -Lopenbsd-compat/ -L/opt/openssl-1.1.1n/lib -Wl,-z,relro -Wl,-z,now -Wl,-z,noexecstack -fstack-protector-strong -pie -lssh -lopenbsd-compat -lssh -lopenbsd-compat -lcrypto -ldl -lutil -lz -lcrypt -lresolv

Make install

root@debian138:~/openssh-8.9p1# make install

...

ssh-keygen: generating new host keys: RSA DSA ECDSA ED25519

/opt/openssh8.9/sbin/sshd -t -f /opt/openssh8.9/etc/sshd_config

设置路径

echo 'export PATH=/opt/openssh8.9/bin:/opt/openssh8.9/sbin:$PATH' >> /etc/profile.d/path.sh

chmod u+x /etc/profile.d/path.sh

. /etc/profile.d/path.sh

新版本:

/opt/openssh8.9/bin# /opt/openssh8.9/bin/ssh -V

OpenSSH_8.9p1, OpenSSL 1.1.1n 15 Mar 2022

sshd_config

惯例修改root远程,生成环境应禁用root直接登录:

cd /opt/openssh8.9/etc/

cp -p /opt/openssh8.9/etc/sshd_config /opt/openssh8.9/etc/sshd_config.bk

vi sshd_config

#Port 22

Port 22022

PermitRootLogin yes

#PermitRootLogin prohibit-password

#PasswordAuthentication yes

PasswordAuthentication yes

#UsePAM no

UsePAM yes

#AllowAgentForwarding yes

#AllowTcpForwarding yes

#GatewayPorts no

#X11Forwarding no

X11Forwarding yes

或者

cat<<eof >>/opt/openssh8.9/etc/sshd_config

Port 22022

PermitRootLogin yes

PasswordAuthentication yes

UsePAM yes

X11Forwarding yes

eof

开机自启动

复制原ssh启动文件并修改

原启动文件:

more /etc/init.d/ssh

cp -p /etc/init.d/ssh /etc/init.d/ssh.89

vi /etc/init.d/ssh.89

替换所有/usr/sbin/sshd为/opt/openssh8.9/sbin/sshd

:%s+/usr/sbin/sshd+/opt/openssh8.9/sbin/sshd+g

开机自启动制作

新建/etc/rc.local

vi /etc/rc.local

# By default this script does nothing.

/etc/init.d/ssh.89 start

exit 0

保存退出。

chmod u+x /etc/rc.local

客户端连接:

----都勾选

通过新版本ssh已登录成功:

停原系统自带ssh服务

# netstat -lantp4

Active Internet connections (servers and established)

Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name

tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 511/sshd

tcp 0 0 127.0.0.1:25 0.0.0.0:* LISTEN 940/exim4

tcp 0 0 0.0.0.0:22022 0.0.0.0:* LISTEN 709/sshd: /opt/open

tcp 0 624 192.168.111.138:22 192.168.111.1:5066 ESTABLISHED 1868/sshd: root@pts

tcp 0 0 192.168.111.138:22 192.168.111.1:1032 ESTABLISHED 1880/sshd: root@pts

tcp 0 0 192.168.111.138:22022 192.168.111.1:16738 ESTABLISHED 1447/sshd: root@pt

禁用系统自带的ssh,仅保留新版本22022端口:

systemctl disable ssh

Removed /etc/systemd/system/sshd.service.

Removed /etc/systemd/system/multi-user.target.wants/ssh.service.

root@debian138:~# netstat -lantp4

Active Internet connections (servers and established)

Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name

tcp 0 0 127.0.0.1:25 0.0.0.0:* LISTEN 964/exim4

tcp 0 0 0.0.0.0:22022 0.0.0.0:* LISTEN 732/sshd: /opt/open

tcp 0 624 192.168.111.138:22022 192.168.111.1:3926 ESTABLISHED 1039/sshd: root@pts

已停掉原22端口。

总结

编译环境

Gcc单独安装会有大量依赖,建议在线安装或光驱iso做本地仓库源。

Make可以使用make_4.1-9.1_amd64.deb直接安装,无依赖

所需包

openssh-8.9p1.tar.gz

openssl-1.1.1n.tar.gz

openssl需要zlib1g-dev开发包,openssh需要pam开发包

先安装zlib1g-dev和libpam0g-dev_1.1.8-3.6_amd64.deb

openssl

./config --prefix=/opt/openssl-1.1.1n --openssldir=/opt/openssl-1.1.1n/openssl zlib-dynamic shared -fPIC

make

make test

make install

openssh

./configure --prefix=/opt/openssh8.9 --with-ssl-dir=/opt/openssl-1.1.1n --with-pam

make

make install

配置ssh

cp -p /etc/init.d/ssh /etc/init.d/ssh.89

vi /etc/init.d/ssh.89

替换所有/usr/sbin/sshd为/opt/openssh8.9/sbin/sshd

:%s+/usr/sbin/sshd+/opt/openssh8.9/sbin/sshd+g

自启动

vi /etc/rc.local

/etc/init.d/ssh.89 start

exit 0

chmod u+x /etc/rc.local

systemctl start rc.local

停原ssh

systemctl disable ssh

相关推荐

10w qps缓存数据库——Redis(redis缓存调优)

一、Redis数据库介绍:Redis:非关系型缓存数据库nosql:非关系型数据库没有表,没有表与表之间的关系,更不存在外键存储数据的形式为key:values的形式c语言写的服务(监听端口),用来存...

Redis系列专题4--Redis配置参数详解

本文基于windowsX64,3.2.100版本讲解,不同版本默认配置参数不同在Redis中,Redis的根目录中有一个配置文件(redis.conf,windows下为redis.windows....

开源一夏 | 23 张图,4500 字从入门到精通解释 Redis

redis是目前出场率最高的NoSQL数据库,同时也是一个开源的数据结构存储系统,在缓存、数据库、消息处理等场景使用的非常多,本文瑞哥就带着大家用一篇文章入门这个强大的开源数据库——Redis。...

redis的简单与集群搭建(redis建立集群)

Redis是什么?是开源免费用c语言编写的单线程高性能的(key-value形式)内存数据库,基于内存运行并支持持久化的nosql数据库作用主要用来做缓存,单不仅仅是做缓存,比如:redis的计数器生...

推荐几个好用Redis图形化客户端工具

RedisPlushttps://gitee.com/MaxBill/RedisPlusRedisPlus是为Redis可视化管理开发的一款开源免费的桌面客户端软件,支持Windows、Linux...

关于Redis在windows上运行及fork函数问题

Redis在将数据库进行持久化操作时,需要fork一个进程,但是windows并不支持fork,导致在持久化操作期间,Redis必须阻塞所有的客户端直至持久化操作完成。微软的一些工程师花费时间在解决在...

你必须懂的Redis十大应用场景(redis常见应用场景)

Redis作为一款高性能的键值存储数据库,在互联网业务中有着广泛的应用。今天,我们就来详细盘点一下Redis的十大常用业务场景,并附上Golang的示例代码和简图,帮助大家更好地理解和应用Redis。...

极简Redis配置(redis的配置)

一、概述Redis的配置文件位于Redis安装目录下,文件名为redis.conf(Windows名为redis.windows.conf,linux下的是redis.conf)你可以通过C...

什么是redis,怎么启动及如何压测

从今天起咱们一起来学习一下关于“redis监控与调优”的内容。一、Redis介绍Redis是一种高级key-value数据库。它跟memcached类似,不过数据可以持久化,而且支持的数据类型很丰富。...

一款全新Redis UI可视化管理工具,支持WebUI和桌面——P3X Redis UI

介绍P3XRedisUI这是一个非常实用的RedisGUI,提供响应式WebUI访问或作为桌面应用程序使用,桌面端是跨平台的,而且完美支持中文界面。Githubhttps://github....

windows系统的服务器快速部署java项目环境地址

1、mysql:https://dev.mysql.com/downloads/mysql/(msi安装包)2、redis:https://github.com/tporadowski/redis/r...

window11 下 redis 下载与安装(windows安装redis客户端)

#热爱编程是一种怎样的体验#window11下redis下载与安装1)各个版本redis下载(windows)https://github.com/MicrosoftArchive/r...

一款轻量级的Redis客户端工具,贼好用!

使用命令行来操作Redis是一件非常麻烦的事情,我们一般会选用客户端工具来操作Redis。今天给大家分享一款好用的Redis客户端工具TinyRDM,它的界面清新又优雅,希望对大家有所帮助!简介Ti...

一个.NET开发且功能强大的Windows远程控制系统

我们致力于探索、分享和推荐最新的实用技术栈、开源项目、框架和实用工具。每天都有新鲜的开源资讯等待你的发现!项目介绍SiMayRemoteMonitorOS是一个基于Windows的远程控制系统,完...

Redis客户端工具详解(4款主流工具)

大家好,我是mikechen。Redis是大型架构的基石,也是大厂最爱考察内容,今天就给大家重点详解4款Redis工具@mikechen本篇已收于mikechen原创超30万字《阿里架构师进阶专题合集...