OpenSSH原始碼編譯安裝
一. 基礎環境準備
作業系統:Ubuntu16.04Server
先sudo apt-get install vim openssh-server,便於後續上傳原始碼以及除錯。
看一下現在openssh的版本:
[email protected]:~$ ssh -V
OpenSSH_7.2p2 Ubuntu-4ubuntu2.6, OpenSSL 1.0.2g 1 Mar 2016
安裝編譯所需要的庫:
[email protected]:~$ sudo apt-get install build-essential
二. 原始碼下載
從https://cdn.openbsd.org/pub/OpenBSD/OpenSSH/portable/下載最新的openssh-7.9p1.tar.gz;
從http://www.zlib.net/下載最新的zlib-1.2.11.tar.gz;
從https://www.openssl.org/source/下載最新的openssl-1.1.1a.tar.gz。
/home/zjd/下新建mySSH目錄,然後將這三個壓縮包上傳上去後用tar分別解壓:
[email protected]:~/mySSH$ tar -zxvf zlib-1.2.11.tar.gz
。。。
[email protected]:~/mySSH$ ll
total 10312
drwxrwxrwx 5 root root 4096 Dec 17 16:41 ./
drwxr-xr-x 4 root root 4096 Dec 17 16:27 ../
drwxr-xr-x 5 zjd zjd 12288 Oct 18 18:06 openssh-7.9p1/
-rw-rw-r-- 1 zjd zjd 1565384 Dec 17 16:39 openssh-7.9p1.tar.gz
drwxr-xr-x 19 zjd zjd 4096 Nov 20 05:35 openssl-1.1.1a/
-rw-rw-r-- 1 zjd zjd 8350547 Dec 17 16:39 openssl-1.1.1a.tar.gz
drwxr-xr-x 14 zjd zjd 4096 Jan 15 2017 zlib-1.2.11/
-rw-rw-r-- 1 zjd zjd 607698 Dec 17 16:39 zlib-1.2.11.tar.gz
三. 編譯安裝
1. zlib
進資料夾後直接配置編譯安裝:
[email protected]:~/mySSH/zlib-1.2.11$ ./configure --prefix=/usr/local
[email protected]:~/mySSH/zlib-1.2.11$ make
[email protected]:~/mySSH/zlib-1.2.11$ sudo make install
2. openssl
注意要先解除安裝舊版本:
[email protected]: ~/mySSH/openssl-1.1.1a$ sudo apt-get purge openssl
刪除舊配置檔案:
[email protected]: ~/mySSH/openssl-1.1.1a$ rm -rf /etc/ssl
然後配置編譯安裝新版本:
[email protected]: ~/mySSH/openssl-1.1.1a$ ./config --prefix=/usr/local --openssldir=/usr/local/ssl
[email protected]: ~/mySSH/openssl-1.1.1a$ make
[email protected]: ~/mySSH/openssl-1.1.1a$ sudo make install
[email protected]: ~/mySSH/openssl-1.1.1a$ ./config shared --prefix=/usr/local --openssldir=/usr/local/ssl
[email protected]: ~/mySSH/openssl-1.1.1a$ make clean
[email protected]: ~/mySSH/openssl-1.1.1a$ make
[email protected]: ~/mySSH/openssl-1.1.1a$ sudo make install
其中:prefix 是安裝目錄,openssldir 是配置檔案目錄,另外建議安裝兩次,shared 作用是生成動態連線庫。
最後,因為是非root使用者安裝,因此需要增加兩條軟連線:
[email protected]:~/mySSH/openssl-1.1.1a$ sudo ln -s /usr/local/lib/libssl.so.1.1 /usr/lib/libssl.so.1.1
[email protected]:~/mySSH/openssl-1.1.1a$ sudo ln -s /usr/local/lib/libcrypto.so.1.1 /usr/lib/libcrypto.so.1.1
OK,現在看一下openssl的版本:
[email protected]:~/mySSH/openssl-1.1.1a$ openssl version
OpenSSL 1.1.1a 20 Nov 2018
3. openssh
[email protected]:~/mySSH/openssh-7.9p1$ ./configure -prefix=/usr/local -sysconfdir=/etc/ssh -with-ssl-dir=/usr/local/ssl
[email protected]:~/mySSH/openssh-7.9p1$ make
[email protected]:~/mySSH/openssh-7.9p1$ sudo make install
安裝完重啟服務:
[email protected]:~/mySSH/openssh-7.9p1$ sudo systemctl restart sshd.service
現在再看一下ssh的版本:
[email protected]:~/mySSH/openssh-7.9p1$ ssh -V
OpenSSH_7.9p1, OpenSSL 1.1.1a 20 Nov 2018