SSH主要功能及概要:
1、SSH主要提供兩個服務:一個是提供類似telnet遠程聯機服務器的服務,另一個是類似FTP服務的sftp-server,借助SSH協議來傳輸數據的,提供更安全的SFTP服務。
2、默認端口是22,安全協議版本是SSH2
3、服務端主要包含兩個服務功能ssh遠程連接,SFTP服務
4、ssh客戶端包含ssh連接命令,以及遠程拷貝scp命令sftp命令等
SSH結構:
SSH服務由服務端軟件openssh和客戶端(常見客戶端:SSH,CRT,putty,xshell)組成,SSH服務默認使用22端口提供服務,它有兩個不兼容的SSH協議版本,分別是1.x和2.x
加密機制:通過密鑰機制的
1.客戶端連接服務端,服務端發送密鑰
2.客戶端生成密鑰然后整合服務端密鑰,形成新的密鑰
3.通過密鑰對解密進行交流
配置文件:/etc/ssh/sshd_config
SSH1.X整個聯機加密步驟:
1.當ssh服務啟動的時候,就會產生一個768-bit的臨時公鑰(sshd_config配置文件中)存放在server中
2.當client端SSH聯機請求傳送過來時,服務器就將這個密鑰發給客戶端,客戶端就會對比現在的公鑰與之前存儲的公鑰,看是否一樣。判斷標准時客戶端聯機用戶目錄下~/.ssh/known-hosts文件的內容(Linux客戶端)
3.客戶端收到后再自己生成一個256-bit的私鑰,並將私鑰與公鑰整合成一對完整的密鑰,再傳給服務端
4.完成以后,服務與客戶端就以這對1024-bit的密鑰進行數據的傳遞
SSH1.X是不安全的,當他第一次收到共享密鑰對后,就不再檢查,所以內容可能會被截獲並修改
SSH2.X整個聯機加密步驟:
其他與SSH1.X一樣,就是多加了一個確定聯機正確性的Diffie-Hellman機制,在每次傳輸數據中,服務端都會用該機制檢查數據的來源是否正確
SSH的服務認證類型:
1、基於口令的安全驗證:
基於口令的安全驗證的方式就是大家現在一直在用的,只要知道服務器的SSH連接賬號和口令(當然也要知道對應服務器的ip及開放端口),就一顆通過ssh客戶端登陸到這台遠程主機。
Linux中兩個服務器之間連接:ssh -p端口號 用戶名@ip地址
ssh -p23 zr@192.168.1.1
2、基於密鑰的安全驗證:
基於密鑰的安全驗證方式是指,需要依靠密鑰,也就是必須事先建立一對密鑰對,然后把公用密鑰放在需要訪問的目標服務器上,另外,還需要把私有密鑰放到ssh的客戶端或對應的客戶端上。
此時,如果要想連接到這個帶有公用密鑰的SSH服務器,客戶端SSH軟件或者客戶端服務器就會向SSH服務器發出請求,請求用聯機的用戶密鑰進行安全驗證。SSH服務器收到請求之后,會先在該SSH服務器上連接的用戶的家目錄下尋找事先放,上去的對應用戶的公用密鑰,然后把它和連接的SSH客戶端發送過來的公用密鑰進行比較。如果兩個密鑰一致,SSH 服務器就用公用密鑰加密“質詢”( challenge)並把它發送給SSH客戶端。
SSH客戶端收到“質詢”之后就可以用自己的私匙解密,再把它發送給SSH服務器。使用這種方式,需要知道聯機用戶的密鑰文件。與第-種基於口令驗證的方式相比,第二種方式不需要在網絡上傳送口令密碼,所以安全性更高了,這時我們也要注意保護我們的密鑰文件,特別是私鑰文件,一旦被黑客獲取,危險就很大了。I
給一個端口如何查看:lsof -i :22 或者是 netstat -lntup|grep 22
SSH服務的安全優化:
修改配置文件sshd_config:
修改默認端口:Port 52113
禁止遠程登陸root:Permi tRootLogin no
禁止空密碼登陸:Permi tEmptyPasswords no
不使用DNS:UseDNS no
加速連接:百度去
示例:Linux客戶端通過ssh連接:
ssh -p22 zr@192.168.157.132 #語法基本格式
在ip地址后面還可以執行簡單的命令比如:
ssh -p 22 zr@192.168.157.132 /sbin/ifconfig #注意命令需要全路徑,並且此操作不會切到別的用戶上去
當提示拒絕連接的時候:1、查看ssh連接的端口
2、查看ip地址是否正確
3、ssh服務是否開啟
當第一次連接的時候,本地會產生一個密鑰文件~/.ssh/known_hosts
SSH客戶端附帶的遠程拷貝命令scp命令:注意這里參數-P是大寫
scp 的基本語法使用:scp - secure copy
scp -P22 要拷貝的文件 zr@192.168.157.132:/接目錄
拉文件:scp -P22 zr@192.168.157.132:/接文件 放到哪里
SSH服務附帶的sftp功能服務:
sftp -oPsrt=端口號 zr@192.168.157.132 就能連上啦默認連接的的目錄是對象的家目錄
參數:put可以上傳文件 get可以下載文件
put /etc/hosts /temp/#把/etc/hosts從客戶端本地傳到sftp服務器指定的目錄/temp下