Linux 從原始碼編譯安裝 OpenSSH
https://blog.csdn.net/bytxl/article/details/46639073
Linux 從原始碼編譯安裝 OpenSSH以及各問題解決
2015年06月25日 17:37:49 bytxl 閱讀數: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公社資料