https://blog.csdn.net/bytxl/article/details/46639073
Linux 從源碼編譯安裝 OpenSSH以及各問題解決
簡單的說 OpenSSH 是一組安全遠程的鏈接工具,主要包括了幾個部份:ssh、sshd、scp、sftp、ssh-keygen、ssh-agent、ssh-add。OpenSSH 安裝配置比較複雜,難點在配置,特別是在 VPS 中,配置不當就徹底沒法連接 VPS 了。html
1、關於 OpenSSH
OpenSSH 是一組用於安全地訪問遠程計算機的鏈接工具。它能夠做爲 rlogin、 rsh rcp 以及 telnet 的直接替代品使用。更進一步, 其餘任何 TCP/IP 鏈接均可以經過 SSH 安全地進行隧道/轉發。 OpenSSH 對全部的傳輸進行加密, 從而有效地阻止了竊聽、 鏈接劫持,以及其餘網絡級的攻擊。mysql
ssh(SSH 客戶端,用於登陸創建鏈接,是 rlogin 與 Telnet的安全替代方案)
sshd (SSH 服務端,典型的獨立守護進程)
scp、sftp (文件安全傳輸工具,rcp、ftp 安全的替代方案)
ssh-keygen (用於產生 RSA 或 DSA 密鑰)
ssh-agent、ssh-add(幫助用戶不須要每次都要輸入金鑰密碼的工具)linux
2、編譯前的準備工做
2.一、查看 OpenSSH 版本
部分 Linux 系統已默認安裝了 OpenSSH,像 Ubuntu Server 10.10 就已安裝了 OpenSSH_5.5p1算法
1 |
ssh -v |
2.二、安裝 OpenSSL 及編譯環境
必須先安裝依賴 OpenSSL,具體見《Linux 從源碼編譯安裝 OpenSSL》 http://www.linuxidc.com/Linux/2011-10/45738.htmsql
2.三、備份 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.四、卸載舊版 OpenSSH
1 |
apt-get purge openssh-client openssh-server |
3、編譯安裝 OpenSSH
3.一、關於特權分離
所謂特權分離(Privilege Separation)其實是一種 OpenSSH 的安全機制,該特性默認開啓,可經過配置文件中的 UsePrivilegeSeparation 指令開啓或關閉。vim
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.二、編譯安裝 OpenSSH
詳細編譯選項見《OpenSSH-4.7p1 安裝指南》安全
下載在 http://www.linuxidc.com/Linux/2011-10/45740.htmbash
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.三、開機自啓動 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 |
4、 OpenSSH 安全配置
4.一、查看 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.二、生成服務器密鑰對
默認 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 |
特別注意:
一、系統密鑰對是不能設置密碼的, -N 後面 是兩個 單引號 !表示密碼串爲空。
二、注意公鑰和私鑰的權限是不一樣的。
金步國做品全集CHM電子書:Apache、Linux系統、PostgreSQL、OpenSSH、OpenSSL
https://www.linuxidc.com/Linux/2011-10/45740.htm
linux公社資料