CentOS7.1 升級OpenSSH 7.8
CentOS7.1 升級OpenSSH 7.8
安裝telnet
為了防止ssh升級失敗無法登入到主機,先安裝一個telnet
安裝包
OpenBSD/OpenSSH/portable/openssh-7.8p1.tar.gz" target="_blank" rel="nofollow,noindex">openssh 7.8下載地址
執行telnet
yum install -y telnet-server xinetd
執行telnet服務
systemctl enable xinetd.service systemctl enable telnet.socket systemctl start telnet.socket systemctl start xinetd
預設情況下,系統是不允許root使用者telnet遠端登入的。如果要使用root使用者直接登入,需設定如下內容:
echo -e 'pts/0\npts/1\npts/2\npts/3'>>/etc/securetty servicexinetdrestart ####重啟telnet服務
安裝依賴包
yum install zlib-devel -y pam-devel tcp_wrappers-devel gcc
安裝編譯所需openssl
根據openssh 7.8中的INSTALL檔案中的說明,依賴於OpenSSL >= 1.0.1 < 1.1.0。在openssl官網 選擇了符合條件的最新版本1.0.2p。
編譯安裝FIPS模組
首先,從openssl官網下載原始碼包openssl-fips-2.0.16.tar.gz,將其安裝到/opt/fips-2.0.16目錄下。
說明:在編譯前先設定環境變數FIPSDIR,這是用於指定FIPS模組的安裝目錄,這是fips軟體特有的安裝特性。軟體編譯時會檢測該環境變數是否存在。若不指定,預設會安裝在/usr/local/ssl/fips2.0目錄。
export FIPSDIR=/opt/fips-2.0.16 tar -zxvf openssl-fips-2.0.16.tar.gz cd openssl-fips-2.0.16 ./config make && make install
編譯安裝OpenSSL 1.0.2p
從openssl官網下載原始碼包openssl-1.0.2p,將其安裝到/opt/openssl1.0.2p目錄下。將openssl安裝到專門的目錄,這是為了避免對作業系統自帶的openssl造成影響。
編譯使用引數說明:
--prefix:指定openssl的安裝目錄。按本例中的安裝方式,安裝完成後該目錄下會包含bin(含二進位制程式)、lib(含動態庫檔案)、include/openssl(含報標頭檔案)及openssl(--openssldir選項指定的)這些子目錄。 --openssldir:指定openssl檔案的安裝目錄。按本例中的安裝方式,安裝完成後該目錄下會包括certs(存放證書檔案)、man(存放man檔案)、misc(存放各種指令碼)、private(存放私鑰檔案)這些子目錄及openssl.cnf配置檔案。 fips:整合FIPS模組。 --with-fipsdir:指向FIPS模組的安裝目錄位置。 zlib-dynamic:編譯支援zlib壓縮/解壓縮,讓openssl載入zlib動態庫。該選項只在支援載入動態庫的作業系統上才支援。這是預設選項。 shared:除了靜態庫以外,讓openssl(在支援的平臺上)也編譯生成openssl動態庫。 -fPIC:將openssl動態庫編譯成位置無關(position-independent)的程式碼。
tar zxvf openssl-1.0.2p.tar.gz cd openssl-1.0.2p ./config --prefix=/opt/openssl1.0.2p --openssldir=/opt/openssl1.0.2p/openssl fips --with-fipsdir=/opt/fips-2.0.16 zlib-dynamic shared -fPIC make depend make make test make install
安裝完成後,將OpenSSL的庫檔案目錄新增到/etc/ld.so.conf檔案中,並載入到系統記憶體快取中
echo '/opt/openssl1.0.2p/lib' >> /etc/ld.so.conf ldconfig
安裝OpenSSH 7.8p
從openssl官網下載原始碼包openssh-7.8p1.tar.gz,將其安裝到/opt/openssh7.8p1目錄下。將openssh安裝到專門的目錄,這是為了避免與作業系統自帶的openssh造成不必要的衝突,增加複雜度。
tar zxvf openssh-7.8p1.tar.gz cd openssh-7.8p1 ./configure --prefix=/opt/openssh7.8p1 --with-ssl-dir=/opt/openssl1.0.2p --with-pam --with-tcp-wrappers make && make install
編譯使用引數說明:
--prefix:指定安裝目錄 --with-ssl-dir=DIR:指向LibreSSL/OpenSSL庫的安裝目錄的所在路徑。 --with-pam:啟用PAM支援。根據OpenSSH的安裝說明,如果在編譯時啟用了PAM,那麼在安裝完成後,也必須在sshd服務的配置檔案sshd_config中啟用它(使用UsePAM指令)。
echo 'export PATH=/opt/openssh7.8p1/bin:/opt/openssh7.8p1/sbin:$PATH' >> /etc/profile.d/path.sh source /etc/profile.d/path.sh
配置OpenSSH
前面已經安裝好了openssh,但是我們還需要配置它,以保證sshd服務可以啟起來。
我們可以先看一下原有的sshd服務(屬於openssh-server軟體包)都有哪些配置檔案:
rpm -ql openssh-server | grep -i --color etc /etc/pam.d/sshd /etc/ssh/sshd_config /etc/sysconfig/sshd
新增或者修改配置檔案sshd_config中的引數
Protocol 2 SyslogFacility AUTHPRIV PermitRootLogin yes AuthorizedKeysFile.ssh/authorized_keys PasswordAuthentication yes ChallengeResponseAuthentication no #編譯的時候啟用了PAM支援,就必須啟用 UsePAM yes AcceptEnv LANG LC_CTYPE LC_NUMERIC LC_TIME LC_COLLATE LC_MONETARY LC_MESSAGES AcceptEnv LC_PAPER LC_NAME LC_ADDRESS LC_TELEPHONE LC_MEASUREMENT AcceptEnv LC_IDENTIFICATION LC_ALL LANGUAGE AcceptEnv XMODIFIERS X11Forwarding yes
拷貝系統原有的配置檔案/etc/sysconfig/sshd到我們軟體下面,這個配置檔案用於設定啟動sshd服務所需的環境變數,在sshd服務的啟動腳本里有呼叫到該配置檔案:
cp /etc/sysconfig/sshd/opt/openssh7.8p1/etc/
停止舊版的sshd服務,再啟動新的sshd服務
systemctl stop sshd systemctl start sshd