摘要
OpenSSH(OpenBSD Secure Shell)是加拿大OpenBSD计划组的一套用于安全访问远程计算机的连接工具。该工具是SSH协议的开源实现,支持对所有的传输进行加密,可有效阻止窃听、连接劫持以及其他网络级的攻击。 OpenSSH 9.6之前版本存在安全漏洞,该漏洞源于当在添加PKCS11托管私钥的过程中指定目标约束时,这些约束仅应用于第一个密钥。
为了解决以漏洞,将openssh的版本升级到9.7.
准备工作
下载源
下载地址:Index of /pub/OpenBSD/OpenSSH/portable/
通过ftp上传到/home目录
查看原有版本
ssh -V
查找安装位置 whereis ssh
备份
根据安装位置,进行数据备份
mv /etc/ssh /etc/ssh_old.bak
mv /usr/bin/ssh /usr/bin/ssh_old.bak
mv /usr/bin/ssh-keygen /usr/bin/ssh-keygen_old.bak
mv /usr/sbin/sshd /usr/sbin/sshd_old.bak
mv /etc/pam.d/sshd.pam /etc/pam.d/sshd.pam_old.bak
开始工作
解压缩
tar -zxvf openssh-9.7p1.tar.gz
进入到解压的文件夹
cd openssh-9.7p1
初始化openssh
./configure --prefix=/usr/local/openssh --sysconfdir=/etc/ssh --with-pam --with-ssl-dir=/usr/local/openssl --with-zlib
大家可以通过命令查看初始化的参数信息 ./configure --help
./configure
:
- 这是一个脚本,用于准备OpenSSH的编译环境。它会检查你的系统环境,包括必要的库和工具是否已安装,并据此生成适合你的系统的Makefile文件。Makefile文件是编译和安装软件时所需的自动化脚本。
--prefix=/usr/local/openssh
:
- 这个选项指定了OpenSSH安装后的根目录。默认情况下,软件可能会被安装到系统的标准位置(如
/usr/local
),但通过使用--prefix
选项,你可以指定一个不同的安装目录。在这个例子中,OpenSSH的所有文件(包括可执行文件、配置文件等)都将被安装到/usr/local/openssh
目录下。--sysconfdir=/etc/ssh
:
- 这个选项指定了OpenSSH配置文件的存放目录。虽然OpenSSH的安装目录可以通过
--prefix
选项更改,但你可能希望将配置文件(如sshd_config
)保留在系统的标准配置目录下,以便于管理和访问。在这个例子中,配置文件将被放置在/etc/ssh
目录下。--with-pam
:
- 这个选项启用了对Pluggable Authentication Modules (PAM) 的支持。PAM是一个用于认证服务的框架,它允许系统管理员配置和更新认证方法,而无需修改应用程序代码。通过启用PAM支持,OpenSSH可以利用PAM提供的认证机制,如密码验证、双因素认证等。
--with-ssl-dir=/usr/local/openssl
:
- 这个选项指定了OpenSSL的安装目录。OpenSSL是一个强大的安全套接字层密码库,它被广泛用于实现SSL和TLS协议。OpenSSH需要OpenSSL来提供加密功能。如果你将OpenSSL安装在了非标准目录(如
/usr/local/openssl
),你需要通过--with-ssl-dir
选项告诉OpenSSH它的位置。--with-zlib
:
- 这个选项启用了对zlib库的支持。zlib是一个广泛使用的数据压缩库,OpenSSH可以使用它来压缩通过SSH连接传输的数据,从而提高传输效率。如果你的系统中已经安装了zlib库,这个选项会启用对zlib的支持。
若出现如下错误:
error: OpenSSL >= 1.1.1 required (have "100020bf (OpenSSL 1.0.2k-fips 26 Jan 2017)")
那我们就重新编译安装高一点版本的openssl,查看我另外一篇文章centos 升级openssl 到3.0.14-优快云博客。
执行成功如下图所示:
安装和编译
配置完成后,进行安装和编译
make && make install
成功后,如下图所示:
安装完成后,进行配置文件的复制
cp /usr/local/openssh/sbin/sshd /usr/sbin/sshd
cp /usr/local/openssh/bin/ssh /usr/bin/ssh
cp /usr/local/openssh/bin/ssh-keygen /usr/bin/ssh-keygen
cp -p contrib/redhat/sshd.init /etc/init.d/sshd
添加权限
chmod +x /etc/init.d/sshd
修改sshd_config文件(一定)
vim /etc/ssh/sshd_config
PermitRootLogin yes 、PubkeyAuthentication yes、PasswordAuthentication yes 将配置文件中这几个改为yes.
说明:
PermitRootLogin yes:允许root用户通过SSH登录到系统
PubkeyAuthentication yes:启用公钥身份验证
PasswordAuthentication yes:启用密码身份验证
开启开机自启sshd,重启,查看状态
/sbin/chkconfig sshd on
systemctl restart sshd
systemctl status sshd
验证是否成功
sshd -V 或者 ssh -V
重新打开一个中端进行验证,如果成功登陆则成功。