Contents

scp跟sftp是不一樣的東西

Contents

最近在公司使用PHP進行sftp傳輸,但遇到了一些問題。我使用ssh2_scp_send來傳輸檔案,在公司內部的測試中,這個方法可以成功傳輸檔案,但在其他主機上卻無法傳輸。

我在自己的主機上安裝了ssh2環境(我將在未來補充相關筆記),但發現仍然無法連接到該主機。

於是,我嘗試使用sftp命令行工具進行連接,並注意到顯示的是freeFTPd

我隨後查找了相關資料,發現freeFTPd是一款適用於Windows平台的免費sftp/ftp服務架設工具。

然後我 Google 找到了一些資訊..

SFTP 雖然提供了一個安全可靠的傳送渠道,但是SFTP不能直接用瀏覽器開啟。需要使用支援SFTP的軟件才能進入SFTP Server,例如CuteFTP、WinSCP、或者Client Side的FileZilla。還有,freeFTPd的SFTP是不能用SSH登入及使用SCP傳送檔案的。
在Windows下使用freeFTP來架設SFTP Server & 我是我,葉子 - yzl1218 # 天空部落 TIAN #

我發現一個解決方案,可以使用copy("ssh2.sftp://{$ftp_IP}".$remote, $local);來進行檔案傳輸。
參考資料: PHP-sftp文件上传-11750810-51CTO博客

此外,我原本誤以為SCP和SFTP是相同的,但實際上它們是不同的。SCP並不支援續傳功能,它的行為更像是透過SSH執行cp指令。

sftp是基於ftp使用ssh
SCP和CP命令相似,SFTP和FTP的使用方法也類似。SCP和SFTP的共同之處在於「使用SSH將文件加密才傳輸的」
使用「WinSCP」或者「FileZilla」之類的客戶端,還可以和Windows之間進行文件傳輸。

SCP和SFTP的不同之處,首先就是之前提到的,SCP使用「SCP命令」,SFTP則類似「FTP處理文件」的使用方式。
它們的不同之處還不止如此,還有「SCP比較簡單,是輕量級的,SFTP的功能則比較多」。
詳細說的話,雖然還有很多不同之處,但2者的最大不同之處在於「SFTP在文件傳輸過程中中斷的話,連接後還可以繼續傳輸,但SCP不行」。
SCP和SFTP區別 - - ITeye博客

經過這次的經驗,我對SCP和SFTP有了更深入的理解。希望下次在遇到相關問題時,能夠更快地找到解決方案。