网站搜索

如何在 Linux 中从源代码安装 OpenSSH 服务器


OpenSSH 是免费开源的,完全实现 SSH 协议 2.0,它提供了许多用于安全访问和管理远程计算机系统以及管理身份验证密钥的工具,例如 ssh(telnet 的安全替代品)、scp、sftp(ftp 的安全替代品)、ssh-keygen、ssh-copy-id、ssh-add 等。

最近,OpenSSH 9.3 发布了,并附带了许多新功能和错误修复;您可以阅读 SSH 发行说明以获取更多信息。

在本文中,我们将解释如何从源代码在 Linux 系统上安装和配置最新版本的 OpenSSH 服务器和客户端。我们假设您已经安装了 OpenSSH 套件。

要求:

  • Debian/UbuntuRHEL/CentOS Linux 系统
  • C编译器
  • Zlib 1.1.4 或 1.2.1.2 或更高版本
  • LibreSSL 或 OpenSSL >= 1.0.1 < 1.1.0

从源代码安装 OpenSSH 服务器

在安装最新版本的SSH之前,请确保使用以下命令检查系统上安装的SSH的当前版本。

ssh -V

OpenSSH_7.7p2 Ubuntu-4ubuntu2.5, OpenSSL 1.0.2g	1 Mar 2016

从上面的结果来看,安装的OpenSSH版本是7.7,要安装最新的OpenSSH版本,首先需要安装一些依赖,即开发工具或构建必需品以及其他所需的包,如下所示。

-------------- On RedHat-based Distros --------------
sudo yum update
sudo yum group install 'Development Tools'
sudo yum install zlib-devel openssl-devel

-------------- On Debian-based Distros --------------
sudo apt update 
sudo apt install build-essential zlib1g-dev libssl-dev 

为了创建一个合适的环境来安装OpenSSH服务器,我们需要创建一个名为“sshd”的新系统用户和组,以及一个安全的地方 chroot。

sudo mkdir /var/lib/sshd
sudo chmod -R 700 /var/lib/sshd/
sudo chown -R root:sys /var/lib/sshd/
sudo useradd -r -U -d /var/lib/sshd/ -c "sshd privsep" -s /bin/false sshd

解释上面 useradd 命令中的标志:

  • -r – 告诉 useradd 创建系统用户
  • -U – 指示它创建一个具有相同名称和组 ID 的组
  • -d – 指定用户的目录
  • -c – 用于添加注释
  • -s – 指定用户的 shell

现在,从任何可用的 HTTP 镜像下载 OpenSSH 版本 9.3 的 tarball,或者您可以使用以下 wget 命令直接在终端中下载。

wget -c https://cdn.openbsd.org/pub/OpenBSD/OpenSSH/portable/openssh-9.3p1.tar.gz
tar -xzf openssh-9.3p1.tar.gz
cd openssh-9.3p1/

现在我们将使用 --with-md5-passwords--with-privsep-path 构建并安装 OpenSSH 服务器>--sysconfdir 选项,这将安装 /usr/local/ 中的所有文件(这是默认安装前缀)。

您可以通过运行 ./configure -h 并进一步自定义安装来查看所有可用选项。

./configure -h

例如,要启用 PAM 和 SELinux 支持,请分别添加 --with-pam--with-selinux 选项,您需要安装所有必需的头文件让他们工作。

## Install PAM and SELinux Headers ##
sudo apt install libpam0g-dev libselinux1-dev   [On Debian/Ubuntu]
sudo yum install pam-devel libselinux-devel     [On CentOS/RHEL]

## Compile and Install SSH from Sources ##
./configure --with-md5-passwords --with-pam --with-selinux --with-privsep-path=/var/lib/sshd/ --sysconfdir=/etc/ssh 
make
sudo make install 

安装OpenSSH后,重新启动SSH或打开另一个终端窗口并检查系统上当前安装的OpenSSH版本。

ssh -V

OpenSSH_9.3p1, OpenSSL 3.0.1 14 Dec 2021

各种 OpenSSH 配置文件位于:

  • ~/.ssh/* – 此目录存储用户特定的 ssh 客户端配置(ssh 别名)和密钥。
  • /etc/ssh/ssh_config – 此文件包含系统范围的 ssh 客户端配置。
  • /etc/ssh/sshd_config – 包含 sshd 服务配置。

要配置 ssh 别名,请参阅:如何配置自定义 SSH 连接以简化远程访问

您可能还想阅读以下与 SSH 相关的文章。

就是这样!在本文中,我们解释了如何在 Linux 系统上从源安装和配置最新版本的 OpenSSH 服务器。如果您有任何问题或意见,请使用下面的反馈表联系我们。