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(LibreSSLOpenSSL 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 PAMLinux PAMOpenPAM

  • 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” 部分。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章