1. 先決條件
一個 C 編譯器。任何 C89 或更好的編譯器都可以工作。如果受支持,configure
將嘗試啓用編譯器的運行時完整性檢查選項。關於特定編譯器的一些說明:
clang
:-ftrapv 和 -sanitize=integer 需要 compiler-rt 運行時
(CC=clang LDFLAGS=--rtlib=compiler-rt ./configure
)
您將需要安裝 Zlib
和 libcrypto
(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 的直接支持,如果不支持,可以使用
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 命令行編輯。如果你的平臺有它在本地可用,你可以使用它,或者你可以嘗試這些多平臺端口:
- 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” 部分。