50臺集羣架構配置介紹-4 SSH 服務概念

SSH服務

SSH是Secure Shell Protocol 的簡寫,由IETF網絡工作小組(Network Working Group)制定:在進行數據傳輸之前,SSH先對聯機數據包透過加密技術進行加密處理,加密後再進行數據傳輸。確保了傳遞的數據安全。
SSH是專爲遠程登錄會話和其他網路服務提供的安全性協議。利用SSH協議可以有效的防止遠程管理過程中的信息泄露問題,在當前的生產環境運維工作中,絕大多數企業普遍採用SSH協議服務來代替傳統的不安全的遠程聯機服務軟件,如telnet(23端口,非加密的)等。
在默認狀態下,SSH服務主要提供兩個服務功能:一個是提供類似telnet遠程聯機服務器的服務,即上面提到的SSH服務;另一個是類似FTP服務的sftp-server,藉助SSH協議來傳輸數據,提供更安全的SFTP服務(vsftp,proftp)
特別提醒:SSH客戶端(ssh命令)還包含一個很有用的遠程安全拷貝命令scp,也是透過ssh協議而作的。

root@m01 ~]# /etc/init.d/sshd status
openssh-daemon (pid  1243) is running...
[root@m01 ~]# ps -ef | grep sshd
root      1243     1  0 10:18 ?        00:00:00 /usr/sbin/sshd
root      1294  1243  0 10:21 ?        00:00:00 sshd: root@pts/0 
root      1328  1296  0 10:27 pts/0    00:00:00 grep sshd
[root@m01 ~]# netstat -tunlp | grep sshd
tcp        0      0 0.0.0.0:22                  0.0.0.0:*                   LISTEN      1243/sshd           
tcp        0      0 :::22                       :::*                        LISTEN      1243/sshd    

知識小結:
1、SSH是安全的加密協議,用於遠程連接Linux服務器。
2、SSH默認端口是22,安全協議版本SSH2,除了2之外還有SSH1(有漏洞)。
3、SSH服務端主要包含兩個服務功能SSH遠程連接和SFTP服務。
4、Linux SSH 客戶端包含ssh遠程連接命令,以及遠程拷貝scp命令等。

SSH1 :

(1)服務端會先產生768-bit的公鑰
(2)客戶端發出請求連接服務端
(3)服務端把server-key(公鑰)回傳給客戶端
(4)客戶端隨機產生256-bit的私鑰,並把服務端發過來的server-key(私鑰)整合成1024-bit(key pair)再發給服務端
(5)服務端再透過key pair跟客戶端連接傳輸資料

SSH2:

在SSH1的聯機過程中,當server接受Client端的Private key 後,就不再針對該次聯機的key pair進行檢驗。此時,若有惡意***針對該聯機的key pair對插入餓記得程序代碼時,由於服務端你不會再檢驗聯機的正確性,因此可能會接收該程序代碼,從而早成系統被黑掉的問題。
爲了改正這個缺點,SSH version2 多加了一個確認聯機正確性的Diffie-Hellman機制。在每一次的數據傳輸中,Server都會以該機制檢查數據的來源是否正確,這樣,可以避免聯機過程中被插入惡意程序代碼的問題。也就是說SSH version 2是比較安全的。

SSH服務認證類型:
  • 基於口令的安全認證:
    基於口令的安全驗證的方式就是大家現在一直在用的,只要知道服務器的SSH連接帳號和口令(當然也要知道對應的服務器IP及開放的 SSH端口,默認爲22),就可以透過SSH客戶端登錄到這臺遠程主機。此時,聯機過程中所有傳輸的數據的是加密的。
  • 基於密鑰的安全驗證:
    基於密鑰的安全驗證方式是指,需要依靠密鑰,也就是必須事先建立一對密鑰對,然後把公用密鑰(Public Key)放在需要訪問的目標服務器上,另外,還需要把私有密鑰(Private Key)放到SSH的客戶端貨對應的客戶端服務器上。
    此時如果要想連接到這個帶有公用密鑰的SSH服務器,客戶端SSH軟件或者客戶端服務器就會向SSH服務端發出請求,請求用聯機的用戶密鑰進行安全驗證。SSH服務器收到請求之後,會先在該SSH服務器上連接的用戶的家目錄下尋找事先放上去的對應用戶的公用密鑰,然後把它和連接的SSH客戶端發送過來的公用密鑰進行比較。如果兩個密鑰一致,SSH服務器就用公用密鑰加密"質詢"(challenge)並把它發送給SSH客戶端。
    SSH客戶端收到"質詢"之後,就可以用自己的私鑰解密,再把它發送給SSH服務器。使用這種方式,需要知道聯機用戶密鑰文件。與第一種基於口令驗證的方式相比,第二種方式不需要在網路上傳送口令密碼,所以安全性更高了。

企業面試題1:給你一個端口,如何命令行查出對應的服務是什麼?
lsof -i tcp:52113
netstat -tunlp | grep 52113
企業面試題1:給你一個進程名,如何查對應的端口是什麼?
netstat -tunlp | grep oldboy

如何防止SSH登錄***小結:
1.用密鑰登錄,不要用密碼登錄。
2.在服務器外面設定防火牆、禁止root登錄SSH。
(1)防火牆封閉SSh,指定源限制(局域網、信任公網)。
(2)開啓SSH只監聽本地內網IP(ListenA***ess 10.0.0.8).
3.儘量不給服務器外網IP。

SSH客戶端基本語法
ssh -p22 [email protected]     

SSH-->連接遠程主機的基本語法
-p(小寫)接端口,默認22端口時可以省略22   
@前面為用戶名,如果用當前用戶連接,可以不指定用戶
@後面為要連接的服務器的IP  

如果當我們連接時出現connection refused 的錯誤,有兩種可能:

  1. no route to host 可能為防火牆的問題。
  2. connection refused 可能為防火牆,也有可能是連接的對端服務沒有開。

SSH客戶端命令小結:
1.切換到別的機器上 ssh -p52113 user@ip 命令
2.到其他機器執行命令(不會切到機器上)ssh -p52113 user@ip 命令(全路徑)
3.當第一次SSH連接的時候,本地會產生一個密鑰文件~/.ssh/known_hosts(多個密鑰)

SCP遠程拷貝命令

scp的基本語法使用,scp -secure copy (remote file copy program)
每次的是全量拷貝,增量拷貝rsync

推:
 scp -P52113 -rp /etc [email protected]:/tmp
拉:
scp -P52113 -rp [email protected]:/tmp/etc /data

-P(大寫)接端口號,默認22端口時可以省略-P22
-r 遞歸,表示拷貝目錄
-p (小寫)表示在拷貝前後保持文件或目錄屬性
-l (limit)限制速度

scp 知識小結:
1.scp是加密的遠程拷貝,而cp僅為本地拷貝。
2.可以把數據從一臺機器推送到另為一臺機器,也可以從其他服務器把數據拉回到本地執行命令的服務器。
3.每次都是全量完整拷貝,因此,效率不高,適合第一次拷貝用,如果需要增量拷貝,用rsync.

#####SSH 服務附帶的sftp功能服務
一個安全的FTP,透過ssh加密數據後進行傳輸

[root@nfs01 ~]# sftp -oPort=52113 [email protected]
Connecting to 172.16.1.61...
[email protected]'s password: 
sftp> put /etc/hosts  --->上傳檔案到當前目錄
Uploading /etc/hosts to /home/oldboy/hosts
/etc/hosts                             100%  295     0.3KB/s   00:00 

sftp> put /etc/hosts /tmp --->上傳檔案到指定目錄
Uploading /etc/hosts to /tmp/hosts
/etc/hosts                             100%  295     0.3KB/s   00:00 

sftp> mkdir a --->新增目錄。 

sftp 命令小結:
1.linux下連接命令 sftp -oPort=52113 [email protected]
2.上傳put 加客戶端本地路徑 put /etc/hosts
也可以指定路徑上傳put /etc/hosts /tmp (安全風險,需要控制,作業)。
3.下載get服務端的內容get hosts,linux 下載到本地連接前的目錄
也可以指定路徑下載,get hosts /etc/
4.連接到遠程家目錄為默認目錄,也可以切換到其他有權限的目錄下。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章