一个 C 编译器。任何 C89 或更好的编译器都可以工作。如果受支持,configure
将尝试启用编译器的运行时完整性检查选项。关于特定编译器的一些说明:
clang
:-ftrapv 和 -sanitize=integer 需要 compiler-rt 运行时CC=clang LDFLAGS=--rtlib=compiler-rt ./configure
)您将需要安装 Zlib
和 libcrypto
(LibreSSL/OpenSSL)。
-fPIC
),否则 OpenSSH
将无法链接到它。如果您必须使用一个非位置无关的 libcrypto,那么可能需要配置 OpenSSH --without-pie
。注意,由于 API 的变化,OpenSSL 1.1.x 目前不支持。其余项目是可选的。
NB。如果您的操作系统支持 /dev/random,您应该配置 libcrypto(LibreSSL/OpenSSL) 来使用它。OpenSSH 依赖于 libcrypto 对 /dev/random 的直接支持,如果不支持,可以使用 prngd
或 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 命令行编辑。如果你的平台有它在本地可用,你可以使用它,或者你可以尝试这些多平台端口:
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” 工具。
使用默认选项安装 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
运行时配置文件被安装在 ${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 的手册页。
$ make survey
[检查文件 “survey” 的内容,确保没有你认为敏感的资料]
$ make send-survey
这将把当前配置主机的配置信息发送到一个调查地址。这将有助于确定实际使用的配置以及配置选项的有效组合。原始数据只对 OpenSSH 开发人员可用,但是可以发布摘要数据。
如果在编译、安装或运行 OpenSSH 时遇到问题。请参阅网站的 “reporting bugs” 部分。