SSH命令和原理及SSH衍生SCP, SFTP命令

SSH,全稱爲Secure SHell安全外殼協議,是一種加密的網絡傳輸協議。SSH僅僅是一協議標準,其具體的實現有不少,既有開源實現的OpenSSH,也有商業實現方案。使用範圍最普遍的固然是開源實現OpenSSH。linux上就是使用的OpenSSH。SSH經常使用來開通加密傳輸隧道,因此不少其餘經常使用的命令均可以經過SSH加密傳輸,如cp加密爲scp,ftp加密爲sftp。 SCP,全稱爲Secure copy安全拷貝,用於在Linux下進行遠程拷貝文件的命令。 SFTP,全稱爲Secure File Transfer Protocol安全文件傳輸協議,html

講解SSH命令前,簡單理解SSH原理。既然SSH是加密的網絡傳輸協議,那麼,SSH登陸時是怎麼保證密碼的安全性呢?linux

其實,SSH登陸時是使用非對稱加密算法RSA進行加解密,因爲RSA計算過程複雜,耗時較長,因此登陸後SSH客戶端和服務器之間數據傳輸是約定了相同的密鑰進行對稱加解密,提升效率。算法

咱們知道,SSH登陸有兩種方式:口令登陸、公鑰登陸。兩種方式登陸過程大體以下: 口令登陸chrome

  1. 客戶端請求登陸服務器,服務器發送本身的公鑰到客戶端
  2. 客戶端使用服務端的公鑰加密密碼,發送密文到服務端
  3. 服務端接收密文,使用本身的私鑰解密密碼
  4. 服務端驗證密碼,返回登陸結果

公鑰登陸瀏覽器

  1. 客戶端生成本身的公鑰私鑰,將公鑰給到服務端(服務端保存在.ssh目錄)
  2. 客戶端請求服務端,服務器生成隨機數並使用客戶端的公鑰加密,發密文給客戶端
  3. 客戶端收到密文,用本身的私鑰解密,作摘要後發送給服務端驗證
  4. 服務端驗證,返回登陸結果

以上流程涉及到的公鑰私鑰保存在以下圖目錄。 安全

.ssh目錄

SSH命令

ssh username@remote_ip:登陸遠程主機,默認22端口,若是服務器不是22端口,可使用-p指定其餘端口。
ssh -D local_port username@remote_ip:-D表示動態代理,綁定本地local_port端口,發向該端口的請求都將發到遠程主機,就好像你在遠程主機上執行該請求同樣。結合chrome的aotu-proxy、switchyOmega等代理插件,使用這些插件將瀏覽器請求導到local_port,協議爲sock5,能夠實現fq。
ssh -L local_port:third_ip:third_port username@remote_ip:本地端口轉發,能夠將訪問本地端口loca_port的數據經過遠程主機remote_ip,轉發到第三方主機的端口,third_ip:third_port,若是third_ip爲127.0.0.1,則表示訪問遠程remote_ip的指定端口third_port。使用該功能能夠實現防火牆穿透。
ssh -R remote_port:third_ip:third_port username@remote_ip:遠程端口轉發,能夠監聽遠程的remote_port端口,將端口的數據經過remote_ip主機轉發到third_ip。
ssh -NfC username@remote_ip:-N表示不執行命令,用於端口轉發,-f表示後臺運行,-C表示開啓數據壓縮服務器

SCP命令

scp local_file username@remote_ip:remote_folder或者scp local_file username@remote_ip:remote_file:基本用法,用於複製文件到遠程,改變位置也能夠從遠程複製文件到本地。 scp -r local_folder remote_username@remote_ip:remote_folder:複製目錄網絡

SFTP命令

sftp是一個加密的、交互式的相似於ftp的文件傳輸程序。使用sftp登陸遠程後,sftp有兩套類似的命令,能夠同時操做遠程和本地目錄。 sftp [-P port] username@remote_ip:登陸服務器,登陸有進入交互界面,sftp>。
pwd和lpwd:pwd顯示遠程當前目錄,lpwd顯示本地當前目錄,全部命令前加l表示local本地。
ls和lls:ls顯示遠程當前目錄下的東西,lls顯示本地
get file.sub:下載文件到本地
put file.sub:上傳文件到遠程ssh

以上。網絡傳輸協議

參考資料

  1. 端口轉發:cherrot.com/tech/2017/0…
  2. ssh選項:linux.51yip.com/search/ssh
相關文章
相關標籤/搜索