4,385 瀏覽數

SFTP & FTP

昨天同事問了我一個 FTP 的問題,但老實說我已經很少使用傳統的 FTP 當做檔案傳輸工具,目前我比較傾向使用 SSH 的 SFTP 功能,我們來看一下什麼是 SSH , SFTP

SSH (Secure SHell)

SSH 主要是用來取代 Telnet 這種以明碼為傳遞基礎的遠端登入服務,所以資料與檔案都是經過加密的方式在傳送,不用擔心被第三者竊取.

SFTP

SSH 本身就提供 ftp 的功能,它一樣還是使用 SSH 22 port 加密的傳輸,而不是使用 ftp 預設的 21 port.
如果你在安裝 Linux 時大部分的版本皆會安裝 OpenSSH,服務都是開啟的狀態.,但 Clinet 端要如何使用 SSH / SFTP 的功能呢!!!

  • Linux – SFTP

    LinuxClient 端只要使用指令 sftp 就可以以 ftp 的方式連到遠方的 SSH Server ,並且可以像是使用 FTP 方式來傳送檔案了.

    [root@benjr ~]# sftp 10.6.101.42
    The authenticity of host '10.6.101.42 (10.6.101.42)' can't be established.
    RSA key fingerprint is 36:cb:6c:82:9e:08:c4:a3:2d:f7:f7:39:54:d0:e2:19.
    Are you sure you want to continue connecting (yes/no)? yes
    Warning: Permanently added '10.6.101.42' (RSA) to the list of known hosts.
    root@10.6.101.42's password:
    

    選擇 yes 則表示 client 接受 server 的公開主機金鑰,因為我們沒有建立使用者金鑰,伺服器會提示使用者輸入正確的標準 Unix 使用者密碼.

    sftp 依據目前的使用者來登入,如果使用者為 root 遠端 sftp 會自動把 root 當成遠端登入的預設帳號,如要使用不同的帳號登入請在 IP 前指定使用者 ex #sftp ben@10.6.101.42

    [root@benjr ~]# sftp ben@10.6.101.42
    
  • Linux – SCP

    除了 sftp 外,SSH 還提供 #scp ,他的功能類似於 rcp 但較為安全)就能將對方的檔案複製到本地端. 這也是 Linux 的環境下最常使用的檔案分享方式,不過 scp 指令只限定使用在 Linux 的環境下. 語法如下

    [root@benjr ~]# scp [options] sourcefilestring destfilestring
    

    拷貝檔案至遠端 10.6.101.123 的 /root 目錄下

    [root@benjr ~]# scp source.txt 10.6.101.123:/root/
    root@10.6.101.123's password:
    source.txt 100% 22 238.7KB/s 00:00
    

    scp 依據目前的使用者來登入,如果使用者為 root 遠端 scp 會自動把 root 當成遠端登入的預設帳號,如要使用不同的帳號登入請在 IP 前指定使用者 ex ben@10.6.101.123

    [root@benjr ~]# scp source.txt ben@10.6.101.123:/root/
    
  • Windows – WSCP / FileZilla

    至於 Windows 底下也有 3-party 的 scp 軟體如 WSCP(windows Secure copy) 或是 FileZilla,使用方式就很類似於 Windows 下的 FTP.

發表迴響