第1章 openssh:安全網路通訊
本章要點
關於openssh
openssh客戶端
起步:使用ssh和scp
openssh伺服器sshd
起步:啟動sshd守護程序
授權金鑰:自動化登入
故障診斷
隧道技術與埠**
openssh是一套安全網路連線工具,用來取代telnet、rcp、rsh/rshd、rlogin/rlogind和ftp/ftpd。與這些被取 代的工具不同,openssh工具將所有通訊資料加密,包括口令。通過這種方式,它們可以阻止惡意使用者偷聽、劫持連線和竊取口令。
本章將涵蓋以下openssh工具。
scp:從另乙個系統上覆制檔案或者將檔案複製到另乙個系統上。
sftp:從其他系統上覆制檔案或者將檔案複製到其他系統上(提供安全保障的ftp替代品)。
ssh:在另乙個系統上執行命令或者登入到另乙個系統。
sshd:openssh守護程序(在伺服器端執行)。
ssh-keygen:建立rsa或者dsa主機/使用者身份驗證金鑰。
1.1 簡介
openssh使用公鑰加密技術[參見(《red hat linux指南:基礎與系統管理篇》,後面簡稱《基礎篇》)c.1.1節],可以提供兩級身份驗證:伺服器和客戶端/使用者。首先,客戶端驗證自己是否連線到正確的伺服器。然後,openssh對系統之間的通訊進行加密。一旦建立了乙個安全的、經過加密的連線,openssh就能夠確保使用者是經過授權的,可以登入該伺服器或者將檔案複製到伺服器(或者從伺服器上覆制檔案)。在驗證了系統和使用者之後,openssh允許在該連線上傳輸多種服務。這些服務包括互動式shell會話(ssh)、遠端命令執行(ssh和scp)、x11客戶端/伺服器連線以及tcp/ip埠隧道。
ssh1和ssh2
ssh協議第2版(ssh2)完全重寫了ssh協議第1版,在安全、效能和可移植性等方面都得到了增強。這兩個版本的協議是不相容的。因為ssh2 正在快速取代ssh1,而且ssh1容易受到"中間人(man-in-the-middle)"攻擊(參見《基礎篇》c.2節的腳注),所以本章不去討論 ssh1。因為ssh2含有浮點密集型計算,所以在那些沒有fpu(浮點運算單元或者浮點加速器)的系統上(比如舊的486sx系統),ssh1確實還具有一定的市場。red hat linux提供的openssh工具在初始安裝之後同時支援這兩個協議。只需要執行乙個伺服器就能夠與使用其中任何乙個協議的系統進行通訊。
ssh實用工具ssh可以用來通過網路登入到遠端系統。可以選擇使用遠端系統來訪問專用應用程式或者使用只有該系統上才有的裝置,又或者你知道該系統更快或者沒 有本地系統那麼繁忙而使用遠端系統。很多商務人士出門在外的時候,在膝上型電腦上使用ssh登入到公司總部的系統上。如果每個系統使用不同的終端**器窗 口,那就可以通過同乙個gui同時登入到多個系統中。
x11**
開啟x11**之後(安裝red hat linux之後預設開啟),通過ssh連線執行x11程式很簡單:在(執行在gui的)終端**器中執行ssh,然後給出一條x11命令,比如"xclock",此時就會在本地顯示器上出現圖形輸出。更多資訊請參見1.6節。
1.2 關於openssh
本節將討論openssh客戶端和伺服器使用的配置檔案,闡述openssh的工作原理,並列舉其他的openssh資源。
1.2.1 相關檔案
openssh客戶端和伺服器需要多個相關檔案。全域性檔案儲存在/etc/ssh目錄下,而使用者檔案放置在~/.ssh目錄中。在每個檔案的描述中,第乙個單詞指出是客戶端還是伺服器使用該檔案。
警告:rhost身份驗證機制是一種安全風險
儘管openssh能夠從/etc/hosts.equiv、/etc/shosts.equiv、~/.rhosts和~/.shosts中獲取身份驗 證資訊,但是本章並沒有講解如何使用這些檔案,這是因為它們會帶來安全問題。依照配置檔案/etc/ssh/sshd_config中的預設設定,不會使 用這些檔案。
1. /etc/ssh目錄中的全域性檔案
本節所列出的全域性檔案將會影響到所有的使用者,但是使用者的~/.ssh目錄下面的檔案可以覆蓋這裡的設定。
moduli
客戶端和伺服器均有該檔案,其中包含了金鑰交換資訊,openssh利用這些資訊建立安全連線。不要修改這個檔案。
ssh_config
客戶端配置:全域性openssh配置檔案。對於這裡的配置項,可以被使用者的~/.ssh/config檔案中的配置項覆蓋。
sshd_config
伺服器配置:sshd的配置檔案。
ssh_host_dsa_key、ssh_host_dsa_key.pub
伺服器檔案:ssh協議第2版的dsa主機金鑰。兩個檔案的所有者都應該是root。ssh_host_dsa_key.pub是公開檔案,任何人都應該可以讀取,但是只有它的所有者具有寫許可權(檔案訪問許可權碼為644)。而對於ssh_host_dsa_key私有檔案而言,除了它的所有者之外,任何人都不應該有讀許可權或者寫許可權(檔案訪問許可權碼為600)。
ssh_host _rsa_key、ssh_host_rsa_key.pub
伺服器檔案:ssh協議第2版的rsa主機金鑰。兩個檔案的所有者都應該是root。ssh_host_rsa_key.pub是公開檔案,任何人都應該 可以讀取,但是只有它的所有者具有寫許可權(檔案訪問許可權碼為644)。而對於ssh_host_rsa_key私有檔案而言,除了它的所有者之外,任何人 對它都沒有讀許可權或者寫許可權(檔案訪問許可權碼為600)。
ssh_known_hosts
客戶端檔案:包含了本地系統的使用者能夠連線到的主機的rsa公鑰(預設)。這個檔案所包含的資訊類似於~/.ssh/known_hosts,但它是由系統管理員建立並可以由所有使用者訪問。這個檔案的所有者應該是 root,而且任何人對它都有讀許可權,但是只有它的所有者有寫許可權(檔案訪問許可權碼為644)。
sshrc
伺服器配置:包含初始化例程。如果不存在~/.ssh/rc檔案,那麼這個指令碼要在~/.ssh/environment之後且使用者的shell指令碼開始之前執行。
2. ~/.ssh目錄下的使用者檔案
當連線到遠端系統的時候,openssh自動建立~/.ssh目錄,並在這個目錄中自動建立known_hosts檔案。
authorized_keys
伺服器檔案:有了該檔案,不需輸入口令就能夠登入到另乙個系統中,並能夠從該系統中複製檔案或者將檔案複製到該系統中。除了檔案的所有者之外,任何人都沒有對這個檔案的寫許可權。
config
客戶端配置:使用者的私有openssh配置檔案。這個檔案中的設定會覆蓋/etc/ssh/ssh_ config中的對應項。
environment
伺服器配置:包含了一些當使用者使用ssh登入之後就會執行的命令。它在功能上類似於本地的bash shell的~/.bashrc。
id_dsa、id_dsa.pub
客戶端檔案:由ssh-keygen生成的dsa使用者身份驗證金鑰。兩個檔案的所有者都應該是該檔案所在的主目錄的使用者。id_dsa.pub是公開文 件,任何人都應該能夠讀取,但是只有它的所有者有寫許可權(檔案訪問許可權碼為644)。除所有者之外,任何人都沒有id_dsa私有檔案的讀許可權或者寫許可權 (檔案訪問許可權碼為600)。
id_rsa、id_rsa.pub
客戶端檔案:由ssh-keygen生成的rsa使用者身份驗證金鑰。兩個檔案的所有者都應該是該檔案所在的主目錄的使用者。id_rsa.pub是公開文 件,任何人都應該能夠讀取,但是只有它的所有者有寫許可權(檔案訪問許可權碼為644)。除所有者之外,任何人都沒有id_rsa私有檔案的讀許可權或者寫許可權 (檔案訪問許可權碼為600)。
known_hosts
客戶端檔案:包含了使用者所連線到的主機的rsa公鑰(預設)。每次使用者連線到乙個新的伺服器的時候,openssh都會自動向這個檔案新增若干項。有關使用dsa金鑰的資訊請參見1.3.7節中的"hostkeyalgorithms"部分。
rc伺服器配置:包含了初始化例程。這個指令碼在environment指令碼之後且使用者的shell指令碼開始執行之前執行。如果這個檔案不存在,那麼openssh執行/etc/ssh/sshrc,如果這個檔案也不存在,那麼openssh執行xauth。
1.2.2 openssh的工作原理
當openssh啟動後,它首先建立一條經過加密的連線,然後對使用者進行身份驗證。這兩項任務完成後,openssh就可以用來在這兩個系統之間來回傳送資訊。
openssh使用兩個金鑰對進行加密會話協商:主機金鑰對(host key pair)和會話金鑰對(session key pair)。主機金鑰對是一組公鑰/私鑰,當伺服器系統第一次執行sshd時(通常就是系統第一次啟動時)就會建立這些金鑰對。會話金鑰對則是一組每小時都會改變的公鑰/私鑰。
當openssh客戶端第一次連線到openssh伺服器時,它會要求你確認是否連線到正確的伺服器(參見1.3.3中的"首次身份驗證"部分)。確認之 後,客戶端就會將該伺服器的主機公鑰複製乙份儲存起來。在後續連線中,客戶端就會將伺服器所提供的金鑰與自己所儲存的金鑰進行比較。儘管這個測試並不是那 麼安全,但是接下來的測試相當安全。
然後客戶端生成乙個隨機金鑰,並使用伺服器的主機公鑰和會話金鑰對它進行加密。客戶端將這個經過加密的金鑰傳送到伺服器。然後,伺服器再使用它自己的私鑰 對這個經過加密的金鑰進行解密。這個過程將會建立乙個金鑰,這個金鑰只有客戶端和伺服器知道,並被用來對會話中的其他資訊進行加密。
1.2.3 更多資訊
本地資訊
可以在本機上檢視ssh、scp、ssh-keygen、ssh_config、sshd、sshd_config的man手冊頁 。
配置檔案詳解
config目錄下有2個配置檔案 es的配置檔案 elasticsearch.yml 和日誌配置檔案 logging.yml cluster.name elasticsearch 配置es的集群名稱,預設是elasticsearch,es會自動發現在同一網段下的es,如果在同一網段下有多個集群,就可...
yum配置檔案詳解
yum的配置檔案 yum的一切配置資訊都儲存在乙個叫yum.conf的配置檔案中,通常位於 etc目 錄下,這是整個yum系統的重中之重,所以有必要詳細介紹。下面是乙個從網上找來的yum.con檔案,讓我們以此為例,進行說明。引用 第一部分 配置repository伺服器了,這是最令人激動的,有了好...
SERV U配置檔案詳解
serv u的目錄檔案結構說明 servudaemon.exe serv u的服務程式,主檔案 servudaemon.ini serv u的配置檔案,記錄使用者資訊,伺服器引數 seruadmin.exe serv u管理介面 servuadmin.ini serv u管理介面配置檔案 servu...