linux配置ssh
Ⅰ 【linux】SSH 使用密碼/公鑰遠程登錄總結
本文是筆者查閱網上資料做的總結,關於SSH原理,什麼是對稱加密和非對稱加密,本文不過多介紹。這里介紹一下SHH的工作過程、配製方法,可能出現的問題及解決方法。
說明:本文中涉及的例子,SSH客戶端為:本地主機A,SSH伺服器為:伺服器B
SSH協議採用C-S(客戶端-伺服器端)架構進行雙方的身份驗證以及數據的加密。
伺服器端組件監聽指定的埠,負責安全連接的建立、對連接方的身份認證、以及為通過身份認證的用戶建立正確的環境。
客戶端負責發起最初的TCP握手、安全連接的建立、驗證伺服器的身份與之前記錄中的一致、並將自己的驗證信息提供給伺服器。
一個SSH會話的建立過程分為兩個階段。第一階段,雙方溝通並同意建立一個加密連接通道以供後續信息傳輸用。第二階段,對請求接入的用戶進行身份驗證以確定伺服器端是否要給該用戶開放訪問許可權。
當客戶端發起TCP連接時,伺服器端返回信息說明自己支持的協議版本,如果客戶端上支持的協議與之匹配,則連接繼續。伺服器會提供自己的公共主機密鑰(public host key)以讓客戶端確認自己訪問的是正確的機器。
然後,雙方採用一種Diffie-Hellman演算法共同為該會話建立密鑰。每一方的一部分私有數據,加上來自對方的一部分公共數據,通過這種演算法計算,能夠得出完全相同的密鑰用於本次會話。
整個會話的通訊內容都使用該密鑰進行加密。這個階段使用的公鑰/私鑰對與用戶驗證身份用的SSH密鑰是完全無關的。
經典Diffie-Hellman演算法的計算步驟如下:
這個共享密鑰的加密方式被稱為二進制數據包協議(binary packet protocol)。該過程能夠讓雙方平等的參與密鑰生成的過程,而不是由單方掌握。這種共享密鑰生成的過程是安全的,雙方沒有交換過任何未經加密的信息。
生成的密鑰是對稱式密鑰,一方用於加密信息的密鑰等同於另一方用於解密信息的密鑰,而任何第三方由於不持有該密鑰,是無法解密雙方傳遞的內容的。
會話加密通道建立後,SSH開始進入用戶認證階段。
下一步,伺服器驗證用戶身份以決定是否准許其訪問。驗證有不同的方式,選擇的驗證方式取決於伺服器的支持。
最簡單的驗證是密碼驗證:伺服器要求客戶端輸入密碼,客戶端輸入的密碼經過上述的通道加密傳輸給伺服器。
雖然密碼是加密過的,然而該方法仍然不被推薦,因為用戶經常為了省事而使用過於簡單的密碼,而這類密碼很容易就能夠被自動化腳本破解。
最流行的驗證方式是SSH密鑰對,這也是當前最推薦的方式。SSH密鑰對是非對稱密鑰,私鑰和公鑰分別用於不同的功能。
公鑰用於加密,而私鑰用於解密。公鑰可以隨意上傳、共享,因為公鑰的流通並不會危及到私鑰的保密性。
SSH密鑰對的驗證過程起始於上一部分加密通道建立之後,其具體執行步驟如下:
簡單來說,伺服器端用公鑰加密信息,客戶端用私鑰解密信息以證明自己持有私鑰。該過程同時使用了對稱加密和非對稱加密,兩種方式各有自己的功用。
命令如下:
用戶名:為要登錄的伺服器B中已存在的用戶賬戶名
IP地址:為伺服器B的IP地址
-p 埠號:用來指定埠號,默認為22
第一次登錄時,會提示如下提示:
大概意思是說,你正在訪問的主機不能驗證它的真實性,它的RSA key(當前訪問主機的公鑰)指紋是怎樣的,你確定要繼續連接嗎?
輸入yes繼續,會提示,已永久把當前訪問主機的RSA key添加到了已知主機文件(用戶目錄下,.ssh 文件夾中的knwon_hosts文件)中。之後再次 SSH 登錄就不再有該提示了。
接著,輸入登錄賬戶的密碼即可。
SSH 密碼登錄,需要伺服器開啟密碼驗證許可權,編輯伺服器SSH配置命令如下:
在 sshd_config 文件中,Protocol 2 下面 #PasswordAuthentication yes,將前面的#號去掉,保存退出。
公鑰登錄,即免密碼登錄。避免的每次登錄都要輸入的麻煩,也防止了中間人攻擊。是SSH遠程登錄最常用的登錄方式。
提示輸入密鑰對名稱,直接回車,使用默認名稱即可;
提示輸入密碼(使用私鑰時,要輸入密碼),直接回車,不使用密碼即可。
首先,登錄伺服器B,在進行下面的操作。
找到 #PubkeyAuthentication yes,刪除 #號,保存退出。
重啟 ssh 服務
也可指定驗證私鑰:
本地主機A,生成密鑰對後:
sudo vim /etc/selinux/config
Ⅱ linux下安裝SSH服務及使用詳解
secure shell protocol簡稱SSH,是由IETF網路工作小組(network working group) 制定,在進行數據傳輸之前, SSH先對聯級數據包通過加密技術進行加密處理,加密後在進行數據傳輸,確保了傳遞的數據安全.
SSH是 專門為遠程登錄會話和其他網路服務(例如:rsync,ansible)提供的安全性協議 ,利用SSH協議可以有效的防止遠程管理過程中的信息泄露問題,絕大多數企業普遍採用SSH協議服務來代替傳統的不安全的遠程連接伺服器軟體(例如:Telnet/23埠/非加密的)等.
然後開始輸入用戶名
右擊選中追蹤流,在右側再選中TCP流
即可顯示數據包的全過程,圈中的部分是用戶名,之所以每個單詞重復出現,是因為數據有請求,有確認,所以會重復,去重以後就是用戶名:shuai,密碼:123456
在顯示 yes/no 的時候,如果輸入的 yes 就接收到了服務端發送過來的公鑰信息,把這個信息放到了 /root/.ssh/known_hosts文件 里
SSH服務由服務端軟體 OpenSSH(Openssl) 和客戶端 常見的有SSH(linux),secureCRT,putty,Xshell 組成.SSH服務默認使用22埠提供服務, 他有兩個不兼容的SSH協議版本,分別是1.x和2.x
如果在進行連接的時候出現以下情況,如何解決
基於口令的安全驗證方式就是知道伺服器的SSH連接賬號和口令(也要知道對應伺服器的IP地址及開放的SSH埠,默認為22埠)就可以通過SSH客戶端登錄到遠程主機上面,此時聯機過程中所有傳輸的數據都是加密的!
- 演示XSHELL及SSH客戶端連接,口令驗證測試
基於密鑰的安全驗證方式是指,需要依靠密鑰,也就是必須事先建立一對密鑰對,然後把 公用密鑰(鎖頭:public key) 放在需要訪問的目標伺服器上,另外,還需要把 私有密鑰(鑰匙:private key) 放到SSH的客戶端或對應的客戶端伺服器上.
此時,如果想要連接到這個帶有公用密鑰的SSH伺服器上,客戶端SSH軟體或者客戶端伺服器就會向SSH伺服器發出請求,請用聯機的用戶密鑰進行安全驗證,SSH伺服器收到請求之後,會先在該SSH伺服器上連接的用戶的家目錄下面尋找事先放上去的對應用戶的公用密鑰,然後把它和連接SSH客戶端發送過來的公用密鑰進行比較,如果兩個密鑰一直,SSH伺服器就用公用密鑰加密"質詢(challenge)"並把它發送給SSH客戶端!
SSH客戶端收到"質詢"之後就可以用自己的私鑰解密,在把它發送給SSH伺服器,使用這種方式,需要知道聯機用戶的密鑰文件,與第一種基於口令驗證的方式相比,第二種方式不需要在網路上傳送口令密碼,所以安全性更高了,這是我們也注意保護我們的密鑰文件,特別是私鑰文件,一旦被黑獲取到,危險系數增大很多.
修改SSH服務的運行參數,是通過修改配置文件 /etc/ssh/sshd_config 來實現的.
一般來說SSH服務使用默認的配置已經能夠很好的工作了,如果對安全要求不高,僅僅提供SSH服務的情況,可以不需要修改任何參數配置.
SSH服務監聽參數說明
企業伺服器被入侵案例
拉取:PULL
Ⅲ linux如何開ssh服務
1、修改屬性文件:
root@kali:~# leafpad /etc/ssh/sshd_config