目录
- 一:OpenSSH 介绍
- 二:升级 OpenSSH
- 1、下载源码包
- 2、查看当前安装位置
- 3、上传源码包
- 4、生成Makefile文件
- 5、编译并安装
- 6、重启ssh服务
- 7、检查版本信息
一:OpenSSH 介绍
OpenSSH最初是作为OpenBSD系统项目的一部分而开发的,后面因为其强大的功能和安全性,就被开源出来供更广泛的操作系统使用;
OpenSSH如果需要升级到最新版本,因为没有提供对应的仓库源,从而不能使用仓库在线安装这种方式。所以只能通过下载源码编译安装的方式来进行。
OpenSSH官网:https://www.openssh.com/
二:升级 OpenSSH
1、下载源码包
openssh 的源码包分为两种类型:
- 源码包
不携带p后缀
:只能用于OpenBSD这个Linux系统,例如:openssh-9.9.tar.gz; - 源码包
会携带p后缀
:可以用于非OpenBSD的操作系统,例如:openssh-9.9p1.tar.gz;
如果我们的操作系统不是OpenBSD,我们需要下载带p后缀的源码包; 链接:https://mirrors.aliyun.com/pub/OpenBSD/OpenSSH/portable/
2、查看当前安装位置
需要先查看当前已经安装的openssh客户端和服务端的安装位置;这样编译安装新版本openssh的时候,只需要将安装路径指定为对应的目录下即可。
这样的好处是其他的一些信息就不用再修改了,例如service文件。因为会默认将旧版本的openssh相关文件进行覆盖,从而替换为新版本openssh的相关文件;
可执行文件位置:/usr
配置文件位置:/etc/ssh
3、上传源码包
4、生成Makefile文件
因为我原来使用仓库安装openssh-server
和openssh-client
后,可执行文件是存放在/usr下的,配置文件是存放在/etc/ssh下的,所以使用以下的参数就行了,其他的保持默认即可。
这里新版本的sshd和ssh、scp等会存放在/usr/sbin和/usr/bin目录下,和我以前ssh的安装路径是一样的,会将我原有的可执行文件进行覆盖。
默认情况下配置文件如果存在,是不会被覆盖的;还会继续使用以前的配置文件
./configure --prefix=/usr --sysconfdir=/etc/ssh
说明:
--prefix
:指定openssh的程序存放路径,不指定默认就是 /usr/local;--exec-prefix
:指定可执行程序的存放位置,不指定默认就是PREFIX;--sysconfdir
:指定配置文件存放路径,如果该目录下有文件,不会覆盖;不指定默认在 PREFIX/etc--sbindir
:指定需要管理员权限才能执行的二进制文件路径,也就是sshd的位置,默认在EPREFIX/sbin- -
-bindir
:指定普通用户都有权限执行的二进制文件路径,也就是ssh、scp等的位置,默认在EPREFIX/bin
5、编译并安装
make -j 4 && sudo make install
6、重启ssh服务
因为sshd这个可执行文件的位置是没有发生变化的。只是将旧的sshd替换为了新的sshd,所以service文件也不需要修改,直接重启service服务器,重新加载就可以了;
sudo systemctl restart ssh.service
7、检查版本信息
可以看到已经升级到了指定的新班本;
ssh -Vtelnet 127.0.0.1 22