1. 程式人生 > >Linux 從原始碼編譯安裝 OpenSSH

Linux 從原始碼編譯安裝 OpenSSH

https://blog.csdn.net/bytxl/article/details/46639073

 

Linux 從原始碼編譯安裝 OpenSSH以及各問題解決

2015年06月25日 17:37:49  閱讀數:20970 個人分類: linux 命令與系統維護  

 

簡單的說 OpenSSH 是一組安全遠端的連線工具,主要包括了幾個部份:ssh、sshd、scp、sftp、ssh-keygen、ssh-agent、ssh-add。OpenSSH 安裝配置比較複雜,難點在配置,特別是在 VPS 中,配置不當就完全無法連結 VPS 了。

一、關於 OpenSSH

OpenSSH 是一組用於安全地訪問遠端計算機的連線工具。它可以作為 rlogin、 rsh rcp 以及 telnet 的直接替代品使用。更進一步, 其他任何 TCP/IP 連線都可以通過 SSH 安全地進行隧道/轉發。 OpenSSH 對所有的傳輸進行加密, 從而有效地阻止了竊聽、 連線劫持,以及其他網路級的攻擊。

ssh(SSH 客戶端,用於登入建立連線,是 rlogin 與 Telnet的安全替代方案)
sshd (SSH 服務端,典型的獨立守護程序)
scp、sftp (檔案安全傳輸工具,rcp、ftp 安全的替代方案)
ssh-keygen (用於產生 RSA 或 DSA 金鑰)
ssh-agent、ssh-add(幫助使用者不需要每次都要輸入金鑰密碼的工具)

二、編譯前的準備工作

2.1、檢視 OpenSSH 版本

部分 Linux 系統已預設安裝了 OpenSSH,像 Ubuntu Server 10.10 就已安裝了 OpenSSH_5.5p1

1
ssh -v

2.2、安裝 OpenSSL 及編譯環境

必須先安裝依賴 OpenSSL,具體見《Linux 從原始碼編譯安裝 OpenSSL》 http://www.linuxidc.com/Linux/2011-10/45738.htm

2.3、備份 OpenSSH 舊配置檔案

1
2
3
cp /etc/init.d/ssh /etc/init.d/ssh.old
cp -r /etc/ssh /etc/ssh.old
cp ~/.ssh/authorized_keys ~/.ssh/authorized_keys.old

2.4、解除安裝舊版 OpenSSH

1
apt-get purge openssh-client openssh-server

三、編譯安裝 OpenSSH

3.1、關於特權分離

所謂特權分離(Privilege Separation)實際上是一種 OpenSSH 的安全機制,該特性預設開啟,可通過配置檔案中的 UsePrivilegeSeparation 指令開啟或關閉。

1
2
3
4
5
mkdir -p  /var/empty #設定一個空目錄
chown 0:0 /var/empty #所有者和組,0代表"root"
chmod 000 /var/empty #目錄許可權設定為"000"
groupadd sshd #建立sshd組
useradd -g sshd -c 'sshd privsep' -d /var/empty -s /bin/false sshd #用於特權分離的非特權使用者"sshd"

3.2、編譯安裝 OpenSSH

詳細編譯選項見《OpenSSH-4.7p1 安裝指南》

下載在 http://www.linuxidc.com/Linux/2011-10/45740.htm

1
2
3
4
5
wget http://ftp.aso.ee/pub/OpenBSD/OpenSSH/portable/openssh-5.6p1.tar.gz
tar -zxf openssh-5.6p1.tar.gz
cd openssh-5.6p1/
./configure --prefix=/usr/local --sysconfdir=/usr/local/ssh --with-ssl-dir=/usr/local/ssl --with-privsep-path=/var/empty --with-privsep-user=sshd  --with-zlib=/usr/local/lib --with-ssl-engine --with-md5-passwords --disable-etc-default-login
make && make install

--prefix 安裝目錄
--sysconfdir 配置檔案目錄
--with-ssl-dir 指定 OpenSSL 的安裝目錄
--with-privsep-path 非特權使用者的chroot目錄
--with-privsep-user=sshd 指定非特權使用者為sshd
--with-zlib 指定zlib庫的安裝目錄
--with-md5-passwords 支援讀取經過MD5加密的口令
--with-ssl-engine 啟用OpenSSL的ENGINE支援

3.3、開機自啟動 sshd

1
2
3
mv /etc/init.d/ssh.old /etc/init.d/sshd #使用原來的啟動指令碼
vim /etc/init.d/sshd #編輯,然後替換路徑。
update-rc.d mysql defaults
1
2
3
4
#將原路徑"/usr/sbin替換為"/usr/local/sibn"
:%s/usr\/sbin/usr\/local\/sbin/g
#將原路徑"/etc/ssh替換為"/usr/local/ssh"
:%s/etc\/ssh/usr\/local\/ssh/g

四、 OpenSSH 安全配置

4.1、檢視 OpenSSH 配置檔案

1
cd /usr/local/ssh

moduli #ssh伺服器的Diffie-Hellman金鑰檔案
ssh_config #ssh客戶端配置檔案
sshd_config #ssh伺服器配置檔案
ssh_host_dsa_key #ssh伺服器dsa演算法私鑰
ssh_host_dsa_key.pub #ssh伺服器dsa演算法公鑰
ssh_host_rsa_key #ssh伺服器rsa演算法私鑰
ssh_host_rsa_key.pub #ssh伺服器rsa演算法公鑰

4.2、生成伺服器金鑰對

預設 OpenSSH 安裝完畢後就自動生成了,如果丟失可通過下面命令重新生成。

1
2
3
4
5
6
ssh-keygen -t rsa1 -f /etc/ssh/ssh_host_key -N '' #適用於ssh-1版
ssh-keygen -t rsa -f /etc/ssh/ssh_host_rsa_key -N ''
ssh-keygen -t dsa -f /etc/ssh/ssh_host_dsa_key -N ''
 
chmod 600 /etc/ssh/ssh_host_*
chmod 644 /etc/ssh/ssh_host_*.pub

特別注意:

1、系統金鑰對是不能設定密碼的, -N 後面 是兩個 單引號 !表示密碼串為空。
2、注意公鑰和私鑰的許可權是不同的。

 

金步國作品全集CHM電子書:Apache、Linux系統、PostgreSQL、OpenSSH、OpenSSL

https://www.linuxidc.com/Linux/2011-10/45740.htm

 

linux公社資料

https://linux.linuxidc.com/