如何使用SSH或SFTP在本地機器和遠程機器之間安全地傳輸文件

      在本文中,我們將向您展示如何使用 SFTP(安全文件傳輸協議),也稱為 SSH 文件傳輸協議,在本地機器和遠程機器之間安全地傳輸文件。命令行提供了其他替代文件傳輸功能,例如SCP,它在后臺也使用 SSH(安全外殼)。在示例中,我們將使用托管在本地計算機上的示例文件 netflix_titles.csv.zip,我們將使用 SFTP 安全地傳輸它。

      如何使用SSH或SFTP在本地機器和遠程機器之間安全地傳輸文件-南華中天

      使用 SSH 登錄遠程服務器

      SSH 在兩個系統之間創建安全連接。對于此示例,您將需要一個本地和一個遠程系統。如果您沒有遠程系統,請在 Windows 或 Linux 上快速配置遠程服務器并使用您的 root(用戶名)和密碼登錄以進行身份??驗證:

      ssh root@172.105.186.216 
      root@172.105.186.216的密碼:
      上次登錄:Fri Feb 26 14:28:52 2021 from 180.150.39.150 
      [ root@sm2134-216 ~]#

      或者,您可以生成用于身份驗證的 SSH 密鑰(公鑰和私鑰對)并使用它登錄到遠程服務器。要確保遠程服務器上不存在任何文件,請檢查當前目錄并列出該目錄的內容:

      [ root@sm2134-216 ~]# pwd 
      /root 
      [ root@sm2134-216 ~]# ls

      如果您配置了新服務器,則根目錄中將沒有文件。退出遠程機器并跳回本地機器并列出當前目錄中的文件和子目錄:

      [ root@sm2134-216 ~]# exit 
      ??▓ ~/Projects/ServerMania ▓??─────────────────??▓ 在 12:10 花了 6m 1s ≡ : 39 ▓?? 
      ? 
      netflix_titles.csv.zip

      該目錄包含一個文件netflix_titles.csv.zip,我們將使用 SFTP 命令將其傳輸到遠程計算機。在本例中,我們使用的是 root 用戶,但請確保您的用戶對遠程服務器具有寫權限。

      使用 SFTP 登錄遠程服務器

      SFTP或安全文件傳輸協議是對傳統FTP(文件傳輸協議)的升級。SFTP 使用 SSH(安全外殼)來保護連接。

      讓我們使用 SFTP 命令登錄到遠程機器并啟動 SFTP 會話并運行?或幫助命令:

      ? sftp root@172.105.186.216 
      root@172.105.186.216的密碼:
      連接到 172.105.186.216。
      sftp> ?

      這將列出所有可能的 SFTP 命令,但我們只想查看其中的幾個。這些命令中的大多數類似于用于導航、文件和目錄創建等的基本 shell 命令。讓我們看一些 SFTP 命令的示例:

      1. sftp> put?- 上傳文件
      2. sftp> get?- 下載文件
      3. sftp> cd path?- 將遠程目錄更改為“路徑”
      4. sftp> pwd?- 顯示遠程工作目錄
      5. sftp> lcd path?- 將本地目錄更改為“路徑”
      6. sftp> lpwd?- 顯示本地工作目錄
      7. sftp> ls?- 顯示遠程工作目錄的內容
      8. sftp> lls?- 顯示本地工作目錄的內容

      在下面的代碼片段中,您可以看到上面提到的一些命令的示例在 SFTP 提示符下運行:

      ??▓ ~/Projects/ServerMania ▓??────────────────────────────??▓ ≡ 20:51: 54 ▓?? 
      ? sftp root@172.105.186.216 
      root@172.105.186.216的密碼:
      連接到172.105.186.216。
      sftp> pwd
      遠程工作目錄:/root 
      sftp> ls 
      sftp> lpwd
      本地工作目錄:/Users/kovid/Projects/ServerMania 
      sftp> 
      sftp> mkdir files 
      sftp> cd files 
      sftp> pwd
      遠程工作目錄:/root/files 
      sftp> cd .. 
      sftp> rmdir 文件
      sftp>

      既然您知道如何導航本地機器和遠程服務器的文件系統,您將學習如何將文件從一個機器傳輸到另一個機器。

      將文件從本地計算機傳輸到遠程服務器

      首先,讓我們看看如何使用安全文件傳輸協議將文件從本地機器傳輸到遠程機器。登錄服務器以訪問 SFTP 提示并導航到本地目錄,該目錄包含要傳輸的文件:

      連接到 172.105.186.216。
      sftp> lpwd
      本地工作目錄:/Users/kovid 
      sftp> lcd /Users/kovid/Projects/ServerMania 
      sftp> lpwd
      本地工作目錄:/Users/kovid/Projects/ServerMania 
      sftp> 
      lls netflix_titles.csv.zip 
      sftp> put netflix_titles. csv.zip
      上傳 netflix_titles.csv.zip 到 /root/netflix_titles.csv.zip 
      netflix_titles.csv.zip 100% 1207KB 1.5MB/s 00:00 
      sftp>

      如您所見,使用put命令,我們已成功將文件netflix_titles.csv.zip從本地機器傳輸到遠程機器。請注意,我們沒有提供遠程機器上的任何路徑,因此文件被復制到遠程機器的當前目錄中。通過運行ls命令驗證文件是否已被復制:

      sftp> pwd
      遠程工作目錄:/root 
      sftp> ls 
      netflix_titles.csv.zip 
      sftp> bye

      使用bye命令關閉連接(SFTP 會話)。

      將文件從遠程服務器傳輸到本地計算機

      現在,讓我們從本地機器中刪除本地文件,然后使用get命令從遠程服務器獲取遠程文件將其復制回來:

      ? pwd 
      /Users/kovid/Projects/ServerMania 
      ? ls 
      netflix_titles.csv.zip 
      ??▓ ~/Projects/ServerMania ▓??──────────────────── ────??▓ ≡ 21:16:22 ▓?? 
      ? rm netflix_titles.csv.zip 
      ??▓ ~/Projects/ServerMania ▓??───────────── ────────────??▓ ≡ 21:16:32 ▓?? 
      ? ls 
      ??▓ ~/Projects/ServerMania ▓??────────────── ──────────────??▓ ≡ 21:16:34 ▓?? 
      ?

      從本地系統中刪除文件后,再次與遠程機器建立 SFTP 連接:

      ? sftp root@172.105.186.216 
      root@172.105.186.216的密碼:
      連接到 172.105.186.216。
      sftp> get netflix_titles.csv.zip
      獲取 /root/netflix_titles.csv.zip 到 netflix_titles.csv.zip 
      /root/netflix_titles.csv.zip 100% 1207KB 4.8MB/s 00:00 
      sftp> 
      sftp> lpwd
      本地工作目錄: /Users/kovid/Projects/ServerMania 
      sftp> 
      lls netflix_titles.csv.zip 
      sftp> 再見

      或者,您也可以使用 SFTP 命令將遠程文件復制到本地系統,而無需從本地命令行建立持久連接。這不必使用get命令。看下面的命令:

      ??▓ ~/Projects/ServerMania ▓??────────────────────────??▓ ≡ 21:25:12 ▓?? 
      ? sftp root@172.105.186.216 :netflix_titles.csv.zip 。
      root@172.105.186.216的密碼:
      連接到 172.105.186.216。
      獲取 /root/netflix_titles.csv.zip 到 ./netflix_titles.csv.zip 
      /root/netflix_titles.csv.zip 100% 1207KB 4.8MB/s 00:00 
      ??▓ ~/Projects/ServerMania ▓??──── ──────────────??▓ 21:25:22 花了 4s ≡ ▓?? 
      ?

      下一步

      SFTP 命令是一種在兩臺服務器之間直接傳輸文件的簡單且安全的方法。現在您擁有輕松使用此命令所需的一切!

      還在為讓所有這些在 ServerMania 服務器上運行而尋求幫助嗎?聯系我們的支持團隊,或在下面的評論中分享您的反饋!