OpenSSH-7.9p1 INSTALL

1. 先决条件

一个 C 编译器。任何 C89 或更好的编译器都可以工作。如果受支持,configure 将尝试启用编译器的运行时完整性检查选项。关于特定编译器的一些说明:

  • clang:-ftrapv 和 -sanitize=integer 需要 compiler-rt 运行时
    (CC=clang LDFLAGS=--rtlib=compiler-rt ./configure)

您将需要安装 Zliblibcrypto (LibreSSL/OpenSSL)。

  • Zlib 1.1.4 或 1.2.1.2 或更高版本(早期的 1.2.x 版本有问题)
  • libcrypto(LibreSSL 或 OpenSSL 1.0.1 ~ 1.1.0)
    LibreSSL/OpenSSL 应该编译为一个位置无关的库(即使用 -fPIC),否则 OpenSSH 将无法链接到它。如果您必须使用一个非位置无关的 libcrypto,那么可能需要配置 OpenSSH --without-pie。注意,由于 API 的变化,OpenSSL 1.1.x 目前不支持。

其余项目是可选的。

  • NB。如果您的操作系统支持 /dev/random,您应该配置 libcrypto(LibreSSL/OpenSSL) 来使用它。OpenSSH 依赖于 libcrypto 对 /dev/random 的直接支持,如果不支持,可以使用 prngdegd

    • PRNGD:如果您的系统缺少 kernel-based random collection,建议使用 Lutz Jaenicke 的 PRNGd。
    • EGD:如果内核缺少 /dev/random,则只有 libcrypto 支持 Entropy Gathering Daemon(EGD) 时才支持它。
  • PAM:如果系统支持,OpenSSH 可以使用可插入身份验证模块(Pluggable Authentication Modules, PAM)。PAM 是大多数 Linux 发行版的标准版本,Solaris、HP-UX 11、AIX >= 5.2、FreeBSD和NetBSD。有关各种 PAM 实现的信息:Solaris PAM、Linux PAM、OpenPAM。

  • GNOME:如果您希望构建 GNOME 通行码请求程序(passphrase requester),则需要 GNOME 库和头文件。
    另外,Jim Knoble 编写了一个优秀的 X11 passphrase requester。

  • LibEdit:sftp 支持通过 NetBSD 的 libedit 命令行编辑。如果你的平台有它在本地可用,你可以使用它,或者你可以尝试这些多平台端口:

    • http://www.thrysoee.dk/editline/
    • http://sourceforge.net/projects/libedit/
  • LDNS:这是一个 DNS BSD 授权的解析器库,支持 DNSSEC。

  • Autoconf:如果您修改了 configure.ac 或 configure 不存在(例如,如果您自己从 git 中检出代码),那么您将需要 autoconf-2.69 通过运行 “autorecf” 来重新构建自动生成的文件。早期也可以工作,但并不保证。

  • 基本安全模块(Basic Security Module, BSM):Solaris 2.5.1、FreeBSD 6.1 和 OS x 中提供了原生 BSM 的支持。另外,您也可以使用 OpenBSM 实现。

  • makedepend:如果您正在对代码进行重大更改,则可能需要使用 “make depend” 重新构建依赖关系(.depend)文件,这需要使用 X11 发行版中的 “makedepend” 工具。

2. 构建/安装

使用默认选项安装 OpenSSH:

./configure
make
make install

这将在 /usr/local/bin 中安装 OpenSSH 二进制文件,在 /usr/local/etc 中安装配置文件,在 /usr/local/sbin 中安装服务器,等等。若要指定一个不同的安装前缀,请使用 --prefix 选项进行配置:

./configure --prefix=/opt
make
make install

这将 OpenSSH 安装在 /opt/{bin,etc,lib,sbin} 中。你也可以覆盖特定的路径,例如:

./configure --prefix=/opt --sysconfdir=/etc/ssh
make
make install

这将在 /opt/{bin,lib,sbin} 中安装二进制文件,但是将把配置文件放在 /etc/ssh 中。

如果您正在使用特权分离(Privilege Separation, 默认启用),那么还需要创建用于特权分离的 sshd 使用的用户、组和目录。详情参见 README.privsep。

如果您正在使用 PAM,您可能需要手动将一个 PAM 控制文件安装为 "/etc/pam.d/sshd" (或者您的系统希望保存它们的任何位置)。注意,用于启动 PAM 的服务名是 __progname,这是您的 sshd 路径的基本名(例如,用于 /usr/sbin/osshd 的服务名将是 osshd)。如果您已经重命名了 sshd 可执行文件,则可能需要修改 PAM 配置。
一个通用 PAM 配置被包含在文件 "contrib/sshd.pam.generic" 中,你可能需要在你的系统上使用它之前编辑它。如果您正在使用 Red Hat Linux 的最新版本,则在 contrib/redhat/sshd.pam 中的配置文件应该更有用。未能安装有效的 PAM 文件可能导致无法使用密码身份验证。在 HP-UX 11 和 Solaris 上,标准 /etc/pam.conf 配置将使用 sshd(sshd 将匹配其他服务名)。

配置脚本还有一些其他选项:

  • --with-audit=[module] 通过指定的模块启用额外的审计。目前,支持 “debug”(通过 syslog 提供附加信息)和 “bsm”(Sun 的基本安全模块) 驱动程序。
  • --with-pam 支持 PAM。如果在其中编译了 PAM 支持,那么还必须在 sshd_config 中启用它(请参考 UsePAM 指令)。
  • --with-prngd-socket=/some/file 允许您启用 EGD 或 PRNGD 支持,并指定一个 PRNGD 套接字。如果您的 Unix 缺少 /dev/random,请使用此选项。
  • --with-prngd-port=portnum 允许您启用 EGD 或 PRNGD 支持,并指定一个 EGD 本地主机 TCP 端口。如果您的 Unix 缺少 /dev/random,请使用此选项。
  • --with-lastlog=FILE 将指定 lastlog 文件的位置。./configure 为 lastlog 搜索几个位置,但是如果 lastlog 安装在不同的位置,可能就找不到它。
  • --without-lastlog 将完全禁用 lastlog 支持。
  • --with-osfsia, --without-osfsia 将启用或禁用 OSF1 的安全集成体系结构。OSF1 机器默认启用。
  • --with-md5-passwords 将启用 MD5 密码的使用。如果您的操作系统使用 MD5 密码,而系统 crypt() 不直接支持它们,则启用此功能(请参阅 crypt(3/3c) man 页)。如果启用,生成的二进制文件将同时支持 MD5 和传统的 crypt 密码。
  • --with-utmpx 启用 utmpx 支持。对于某些平台,utmpx 支持是自动的。
  • --without-shadow 禁用 shadow 密码支持。
  • --with-ipaddr-display 强制在 $DISPLAY 环境变量中使用数字 IP 地址。一些失灵的系统需要这样做。
  • --with-default-path=PATH 允许您为 sshd 启动的会话指定一个默认的 $PATH。这完全替代了标准路径。
  • --with-pid-dir=PATH 指定 sshd.pid 文件被创建的目录。
  • --with-xauth=PATH 指定 xauth 二进制文件的位置。
  • --with-ssl-dir=DIR 允许您指定 Libre/OpenSSL 库安装在何处。
  • --with-ssl-engine 启用 Libre/OpenSSL 的(硬件) ENGINE 支持。
  • --with-4in6 检查 IPv6 中的 IPv4 映射地址,并将它们转换为实际的(AF_INET) IPv4 地址。解决 Linux 上的一些问题。

如果需要将特殊选项传递给编译器或链接器,可以在运行 ./configure 之前将这些选项指定为环境变量。
例如:

CC="/usr/foo/cc" CFLAGS="-O" LDFLAGS="-s" LIBS="-lrubbish" ./configure

3. 配置

运行时配置文件被安装在 ${prefix}/etc 或您使用 --sysconfdir(默认/usr/local/etc) 指定的任何文件。

默认配置应该立即可用,但是您应该检查它以确保它符合您的安全需求。

要生成一个主机密钥,请运行 “make host-key”。你也可以使用以下命令手动操作:

ssh-keygen -t [type] -f /etc/ssh/ssh_host_key -N ""

对于希望生成的每种类型(rsa、dsa 或 ecdsa),使用

ssh-keygen -A

生成所有受支持类型的键。

用配置目录的正确路径替换 /etc/ssh。(${prefix}/etc 或您在配置时使用 --sysconfdir 指定的任何目录)

如果您已经配置了支持 EGD 的 OpenSSH,请确保 EGD 正在运行并收集了一些 Entropy。

有关配置的更多信息,请参阅 sshd、ssh 和 ssh-agent 的手册页。

4. (可选)发送调查

$ make survey
[检查文件 “survey” 的内容,确保没有你认为敏感的资料]
$ make send-survey

这将把当前配置主机的配置信息发送到一个调查地址。这将有助于确定实际使用的配置以及配置选项的有效组合。原始数据只对 OpenSSH 开发人员可用,但是可以发布摘要数据。

5. 问题

如果在编译、安装或运行 OpenSSH 时遇到问题。请参阅网站的 “reporting bugs” 部分。

你可能感兴趣的:(开源代码)