一、協(xié)議介紹
1.1 FTP 協(xié)議
1.11 特點(diǎn)
FTP(File Transfer Protocol)是一種用于在計(jì)算機(jī)之間傳輸文件的標(biāo)準(zhǔn)網(wǎng)絡(luò)協(xié)議。它提供了一種簡單而常用的方式來上傳和下載文件,以及進(jìn)行文件管理操作。
FTP協(xié)議的主要特點(diǎn)包括:
-
客戶端-服務(wù)器架構(gòu):FTP使用客戶端-服務(wù)器模型,其中客戶端是發(fā)送文件請求的一方,而服務(wù)器是存儲文件并響應(yīng)客戶端請求的一方。
-
文件傳輸功能:FTP允許用戶通過上傳和下載文件來進(jìn)行數(shù)據(jù)傳輸。客戶端可以從服務(wù)器上下載文件到本地計(jì)算機(jī),也可以將本地計(jì)算機(jī)上的文件上傳到服務(wù)器。
-
目錄和文件管理:FTP支持對遠(yuǎn)程服務(wù)器上的目錄和文件進(jìn)行管理操作。用戶可以創(chuàng)建、刪除、重命名和移動目錄,以及執(zhí)行類似的操作來處理文件。
-
匿名訪問:FTP支持匿名訪問,允許用戶通過提供一個(gè)公共用戶名(通常是"anonymous")而無需提供密碼來訪問公共服務(wù)器上的文件。
-
身份驗(yàn)證和安全性:FTP支持多種身份驗(yàn)證方法,包括基于用戶名和密碼的驗(yàn)證以及基于加密證書的驗(yàn)證。然而,標(biāo)準(zhǔn)的FTP協(xié)議在數(shù)據(jù)傳輸過程中沒有加密,因此數(shù)據(jù)在傳輸過程中可能會被竊聽或篡改。
除了標(biāo)準(zhǔn)的FTP協(xié)議,還有一些衍生的協(xié)議,如FTPS(FTP over SSL/TLS)和SFTP(SSH File Transfer Protocol)。這些協(xié)議添加了加密和安全功能,以增強(qiáng)數(shù)據(jù)傳輸?shù)陌踩浴?/p>
1.12 基本工作原理
FTP的基本工作原理如下:
-
建立連接:客戶端與服務(wù)器之間通過TCP/IP建立連接。默認(rèn)情況下,FTP使用端口號21作為控制連接的端口。
-
身份驗(yàn)證:客戶端向服務(wù)器發(fā)送用戶名和密碼進(jìn)行身份驗(yàn)證。如果是匿名訪問,客戶端可以使用公共用戶名"anonymous",通常無需提供密碼。
-
控制連接:一旦身份驗(yàn)證成功,控制連接建立起來。通過控制連接,客戶端發(fā)送各種指令給服務(wù)器,如上傳文件、下載文件、創(chuàng)建目錄等。
-
數(shù)據(jù)連接:FTP使用不同的數(shù)據(jù)連接模式來傳輸文件。兩種常見的模式是主動模式和被動模式。
-
在主動模式下,服務(wù)器主動地在 數(shù)據(jù)端口(默認(rèn)端口號20) 上監(jiān)聽并等待客戶端的連接請求。客戶端向服務(wù)器發(fā)送請求后,服務(wù)器建立數(shù)據(jù)連接并傳輸文件。
-
在被動模式下,服務(wù)器在一個(gè)隨機(jī)的端口上監(jiān)聽,并將該端口信息發(fā)送給客戶端??蛻舳穗S后連接到該端口,建立數(shù)據(jù)連接并進(jìn)行文件傳輸。
-
-
文件傳輸:一旦數(shù)據(jù)連接建立,文件傳輸可以開始??蛻舳税l(fā)送相應(yīng)的指令,如上傳文件(STOR)、下載文件(RETR)、刪除文件(DELE)等,服務(wù)器根據(jù)指令執(zhí)行相應(yīng)的操作。
-
控制連接關(guān)閉:文件傳輸完成后,控制連接可以關(guān)閉,釋放資源。如果客戶端需要進(jìn)行其他操作,可以重新建立控制連接。
FTP通過建立控制連接和數(shù)據(jù)連接的方式實(shí)現(xiàn)文件傳輸??刂七B接用于發(fā)送指令和進(jìn)行身份驗(yàn)證,數(shù)據(jù)連接則用于實(shí)際的文件傳輸。這種分離的結(jié)構(gòu)使得FTP能夠靈活地進(jìn)行文件管理和數(shù)據(jù)傳輸操作。
1.2 SFTP協(xié)議
1.21 特點(diǎn)
SFTP(SSH File Transfer Protocol
,以前一直以為是Secure FTP,不過確實(shí)Secure??)是一種安全的文件傳輸協(xié)議,用于在計(jì)算機(jī)之間傳輸文件。它建立在SSH(Secure Shell)協(xié)議之上,利用SSH的安全性和加密功能來保護(hù)文件傳輸過程中的數(shù)據(jù)安全。
SFTP提供了對文件的上傳、下載、刪除和重命名等基本操作。與傳統(tǒng)的FTP協(xié)議相比,SFTP使用了加密通道,使得傳輸過程中的文件和用戶憑據(jù)都得到了保護(hù),提供了更高的安全性。
SFTP的工作方式與FTP類似,但在底層實(shí)現(xiàn)和數(shù)據(jù)傳輸上有所不同。它使用SSH協(xié)議進(jìn)行身份驗(yàn)證和建立安全連接,然后通過該連接進(jìn)行文件傳輸。SFTP支持文件和目錄的列表顯示,以及對文件的讀取和寫入操作。
SFTP還支持文件的壓縮和解壓縮功能,可以減少文件傳輸?shù)拇笮?,提高傳輸效率。此外,SFTP還支持文件的隨機(jī)訪問,可以跳過文件的特定部分,從指定位置開始讀取或?qū)懭霐?shù)據(jù)。
SFTP是SSH(SecureShell)的一部分。SSH是一種用于安全遠(yuǎn)程登錄和文件傳輸?shù)膮f(xié)議,而SFTP是在SSH協(xié)議之上建立的一種安全文件傳輸協(xié)議。
SSH協(xié)議提供了加密通信和身份驗(yàn)證機(jī)制,使得用戶可以安全地遠(yuǎn)程登錄到其他計(jì)算機(jī),并在計(jì)算機(jī)之間傳輸文件。SFTP利用了SSH協(xié)議的安全性和加密功能,提供了更加安全可靠的文件傳輸方式。
在SSH協(xié)議中,SFTP作為一種子協(xié)議存在,用于處理文件傳輸?shù)南嚓P(guān)操作。因此,當(dāng)你使用SFTP進(jìn)行文件傳輸時(shí),實(shí)際上是通過SSH協(xié)議來建立安全連接,并使用SFTP子協(xié)議進(jìn)行文件傳輸操作。
1.22 基本工作原理
SFTP(SSH File Transfer Protocol)的基本工作原理如下:
-
SSH連接建立:客戶端與服務(wù)器建立SSH連接,使用SSH協(xié)議進(jìn)行安全通信。SSH提供了加密和身份驗(yàn)證機(jī)制,確保數(shù)據(jù)傳輸?shù)陌踩院涂尚哦?。(端口號是熟知?2)
-
SFTP子協(xié)議:在SSH連接建立后,客戶端通過發(fā)送SFTP指令告知服務(wù)器要使用SFTP協(xié)議進(jìn)行文件傳輸操作。
-
文件傳輸操作:客戶端發(fā)送各種指令給服務(wù)器,如上傳文件(PUT)、下載文件(GET)、刪除文件(RM)等,服務(wù)器根據(jù)指令執(zhí)行相應(yīng)的文件傳輸操作。
-
加密通信:SFTP利用SSH協(xié)議提供的安全通信渠道,對傳輸?shù)奈募?shù)據(jù)進(jìn)行加密,保證傳輸過程中的數(shù)據(jù)機(jī)密性和完整性。
-
目錄和文件管理:SFTP支持對遠(yuǎn)程服務(wù)器上的目錄和文件進(jìn)行管理操作,客戶端可以發(fā)送指令來創(chuàng)建、刪除、重命名和移動目錄,以及進(jìn)行類似的文件管理操作。
-
數(shù)據(jù)傳輸通道:在SFTP中,數(shù)據(jù)傳輸通過SSH連接上的子通道進(jìn)行,這些子通道是基于SSH連接建立的。
-
斷開連接:當(dāng)文件傳輸完成或會話結(jié)束時(shí),客戶端可以發(fā)送斷開連接請求,關(guān)閉SFTP連接。
1.3 ssh協(xié)議
1.31 特點(diǎn)
SSH(Secure Shell
)是一種用于安全遠(yuǎn)程登錄和數(shù)據(jù)傳輸的網(wǎng)絡(luò)協(xié)議。它提供了加密的通信通道,使得用戶可以安全地遠(yuǎn)程連接到其他計(jì)算機(jī),并在網(wǎng)絡(luò)上進(jìn)行安全的數(shù)據(jù)傳輸。
SSH協(xié)議的主要特點(diǎn)包括:
-
加密通信:SSH使用對稱加密、非對稱加密和消息認(rèn)證碼(MAC)等技術(shù)來保護(hù)通信過程中的數(shù)據(jù)安全。這樣,即使在公共網(wǎng)絡(luò)上進(jìn)行傳輸,數(shù)據(jù)也會以加密形式進(jìn)行,防止被未經(jīng)授權(quán)的人竊取或篡改。
-
身份驗(yàn)證:SSH提供多種身份驗(yàn)證機(jī)制,包括基于密碼、公鑰和證書的身份驗(yàn)證方式。這些方法可以確保只有授權(quán)用戶能夠訪問遠(yuǎn)程系統(tǒng)。
-
端口轉(zhuǎn)發(fā):SSH支持端口轉(zhuǎn)發(fā)功能,允許用戶通過安全通道在本地計(jì)算機(jī)和遠(yuǎn)程計(jì)算機(jī)之間建立安全的數(shù)據(jù)傳輸通道。這對于安全地訪問遠(yuǎn)程服務(wù)或在本地主機(jī)上運(yùn)行遠(yuǎn)程應(yīng)用程序非常有用。
-
X11轉(zhuǎn)發(fā):SSH支持X11轉(zhuǎn)發(fā),可以將遠(yuǎn)程圖形界面應(yīng)用程序的顯示轉(zhuǎn)發(fā)到本地計(jì)算機(jī)上。這使得用戶可以在遠(yuǎn)程主機(jī)上運(yùn)行圖形化應(yīng)用程序,并在本地主機(jī)上查看和操作應(yīng)用程序的界面。
-
文件傳輸:SSH協(xié)議可以用于安全地傳輸文件。通過
SCP
(Secure Copy Protocol)或SFTP
(SSH File Transfer Protocol),用戶可以在本地計(jì)算機(jī)和遠(yuǎn)程計(jì)算機(jī)之間進(jìn)行安全的文件傳輸操作。
1.32 基本工作原理
SSH(Secure Shell)的基本工作原理如下:
-
連接建立:客戶端發(fā)起連接請求并與服務(wù)器建立TCP連接。默認(rèn)情況下,SSH使用端口號
22
進(jìn)行連接。 -
協(xié)議版本交換:客戶端和服務(wù)器交換SSH協(xié)議的版本信息,并協(xié)商選擇一個(gè)適當(dāng)?shù)膮f(xié)議版本進(jìn)行后續(xù)通信。
-
密鑰交換(Key Exchange):客戶端和服務(wù)器使用密鑰交換協(xié)議(如Diffie-Hellman)生成共享密鑰。這個(gè)密鑰將用于加密后續(xù)通信過程中的數(shù)據(jù)。
-
用戶身份驗(yàn)證:客戶端向服務(wù)器發(fā)送用戶身份驗(yàn)證請求,并提供相應(yīng)的身份驗(yàn)證信息。常見的身份驗(yàn)證方法包括基于密碼、公鑰和證書的身份驗(yàn)證。
-
加密通信:一旦身份驗(yàn)證成功,客戶端和服務(wù)器使用共享密鑰對通信進(jìn)行加密。這確保了數(shù)據(jù)在傳輸過程中的機(jī)密性,防止被未經(jīng)授權(quán)的人竊聽或篡改。
-
建立會話:一旦加密通信建立,客戶端和服務(wù)器之間可以建立會話。在會話期間,客戶端可以向服務(wù)器發(fā)送各種命令和請求,并接收服務(wù)器的響應(yīng)。
-
命令執(zhí)行:客戶端發(fā)送命令給服務(wù)器執(zhí)行,例如執(zhí)行Shell命令、運(yùn)行遠(yuǎn)程程序等。服務(wù)器執(zhí)行命令并將結(jié)果返回給客戶端。
-
斷開連接:會話結(jié)束后,客戶端可以主動發(fā)送斷開連接請求,或者由于超時(shí)或其他原因,連接可能會自動斷開。
SSH通過建立安全的加密通道、用戶身份驗(yàn)證和加密通信等機(jī)制,確保了遠(yuǎn)程登錄和數(shù)據(jù)傳輸過程的安全性。它采用密鑰交換來生成共享密鑰,用于加密通信,并提供了可靠的用戶身份驗(yàn)證。這樣,用戶可以在不安全的網(wǎng)絡(luò)環(huán)境中安全地遠(yuǎn)程連接到服務(wù)器并進(jìn)行安全的數(shù)據(jù)傳輸和遠(yuǎn)程操作。
1.4 其他常見文件傳輸協(xié)議
常見文件傳輸協(xié)議包括以下幾種:
-
FTP
(File Transfer Protocol):FTP是最早和最常見的文件傳輸協(xié)議,用于在計(jì)算機(jī)之間傳輸文件。它使用客戶端-服務(wù)器架構(gòu),支持文件上傳、下載和目錄管理等功能。 -
SFTP
(SSH File Transfer Protocol):SFTP是在SSH(Secure Shell)協(xié)議之上運(yùn)行的文件傳輸協(xié)議。它提供了通過SSH加密通道進(jìn)行安全的文件傳輸和管理操作,具有更高的安全性。 -
FTPS
(FTP over SSL/TLS):FTPS是基于FTP的安全擴(kuò)展,使用SSL/TLS加密傳輸數(shù)據(jù)。它通過添加安全性層來保護(hù)FTP傳輸過程中的數(shù)據(jù),提供了加密的文件傳輸選項(xiàng)。 -
SCP
(Secure Copy):SCP是在SSH協(xié)議之上進(jìn)行安全文件傳輸?shù)膮f(xié)議。它提供了通過SSH加密通道進(jìn)行文件復(fù)制和傳輸?shù)墓δ?,類似于cp命令。(比如使用WinSCP軟件傳輸文件) -
HTTP
(Hypertext Transfer Protocol):HTTP是用于在Web上傳輸數(shù)據(jù)的協(xié)議,通常用于傳輸HTML頁面和其他媒體資源。盡管HTTP主要用于Web內(nèi)容傳輸,但也可以用于文件下載。 -
HTTPS
(HTTP Secure):HTTPS是基于HTTP的安全擴(kuò)展,使用SSL/TLS加密數(shù)據(jù)傳輸。它通過添加安全性層來保護(hù)HTTP傳輸過程中的數(shù)據(jù),適用于安全的文件下載和傳輸。 -
SMB
(Server Message Block)協(xié)議是一種網(wǎng)絡(luò)文件共享協(xié)議,它允許計(jì)算機(jī)上的應(yīng)用程序讀取和寫入文件以及從計(jì)算機(jī)網(wǎng)絡(luò)中的服務(wù)器程序請求服務(wù)。SMB協(xié)議可以在TCP/IP協(xié)議或其他網(wǎng)絡(luò)協(xié)議上使用。SMB協(xié)議最初由IBM制定,后來被微軟和英特爾采用并發(fā)展成為Microsoft網(wǎng)絡(luò)的通訊協(xié)議。它主要用于在計(jì)算機(jī)間共享文件、打印機(jī)、串口等資源,電腦上的網(wǎng)上鄰居就是靠它實(shí)現(xiàn)的。(我一直用它來和局域網(wǎng)內(nèi)的設(shè)備共享Windows文件夾)。 -
WebDAV
(Web-based Distributed Authoring and Versioning)是一種基于HTTP協(xié)議的通信協(xié)議。它擴(kuò)展了HTTP 1.1,在GET、POST、HEAD等幾個(gè)HTTP標(biāo)準(zhǔn)方法以外添加了一些新的方法,使應(yīng)用程序可對Web服務(wù)器直接讀寫,并支持寫文件鎖定(Locking)及解鎖(Unlock),還可以支持文件的版本控制。WebDAV協(xié)議提供了一個(gè)框架,使用戶能夠在服務(wù)器上創(chuàng)建、更改和移動文檔。它最重要的特性包括維護(hù)關(guān)于作者或修改日期等屬性、命名空間管理、集合和覆蓋保護(hù)。屬性維護(hù)包括創(chuàng)建、刪除和查詢文件信息等操作。命名空間管理涉及在服務(wù)器命名空間內(nèi)復(fù)制和移動網(wǎng)頁。集合涉及創(chuàng)建、刪除和列出各種資源。最后,覆蓋保護(hù)處理與文件鎖定相關(guān)的方面。
SFTP和SCP:
- SCP(Secure Copy)和SFTP(SSH File Transfer Protocol)都是基于SSH協(xié)議的文件傳輸工具,它們都提供安全的文件傳輸功能。但是,它們之間也有一些區(qū)別。
- SCP類似于cp命令,它提供了快速傳輸文件和基本文件屬性(例如訪問權(quán)限和時(shí)間戳)的功能。它使用RCP傳輸文件和SSH提供身份驗(yàn)證和加密1。
- SFTP則更像一個(gè)遠(yuǎn)程文件管理協(xié)議,它不僅可以傳輸文件,還允許對遠(yuǎn)程文件進(jìn)行一系列操作,例如查看目錄、刪除文件和目錄等。此外,SFTP還支持?jǐn)帱c(diǎn)續(xù)傳。
二、搭建Linux的SFTP文件服務(wù)器
-
安裝SSH服務(wù)器:確保系統(tǒng)上安裝了SSH服務(wù)器軟件,這個(gè)不必多說;
-
創(chuàng)建SFTP用戶組和用戶:
- 創(chuàng)建一個(gè)新的用戶組,用于管理SFTP用戶。
groupadd GSFTP
- 創(chuàng)建一個(gè)新的SFTP用戶,并將其添加到
My_sftp
組中。
useradd -m -G GSFTP-s /bin/false june
passwd june# 為用戶設(shè)置密碼
-m選項(xiàng)表示創(chuàng)建用戶的主目錄,如果不存在則會自動創(chuàng)建。
-G GSFTP選項(xiàng)表示將新用戶添加到GSFTP組中。
-s /bin/false選項(xiàng)表示指定用戶的登錄shell為/bin/false,這意味著該用戶無法登錄到系統(tǒng)。
最后,june是新創(chuàng)建的用戶名。
- 設(shè)置SFTP的文件目錄,可以執(zhí)行以下操作:
mkdir /Net_share
chown root:My_sftp /Net_share
chmod 755 /Net_share
mkdir /Net_share/File_save
chown june:GSFTP /Net_share/File_save
chmod 755 /Net_share/File_save
最好按照上面的思路來,否則可能連不上SFTP服務(wù)器:
- 首先建立Net_share目錄,他的擁有者必須是root,并且其他用戶不能擁有寫入的權(quán)限(ChrootDirectory 這個(gè)選項(xiàng)要求的),即權(quán)限不能超過755(否則連不上);
- 很明顯,這樣,我們使用SFTP用戶登錄就只能進(jìn)行下載操作,無法上傳文件;
- 所以在Net_share目錄下建一個(gè)用于上傳和下載的目錄,他的擁有者可以是SFTP用戶,可以無限制操作該目錄下的文件;
這是我之前報(bào)錯的日志:
- 修改linux服務(wù)器的SFTP配置:
編輯/etc/ssh/sshd_config
文件,注釋其中的Subsystem sftp /usr/libexec/openssh/sftp-server,然后新增配置如下:
# 我的SFTP配置
Subsystem sftp internal-sftp # SFTP子系統(tǒng)使用內(nèi)置的SFTP服務(wù)器
Match Group GSFTP # 以下配置僅適用于屬于該組的用戶
ChrootDirectory /Net_share # 目錄限制
ForceCommand internal-sftp # 強(qiáng)制用戶使用內(nèi)置的SFTP服務(wù)器進(jìn)行會話,而不允許執(zhí)行其他命令
AllowTcpForwarding no # 禁止TCP轉(zhuǎn)發(fā)
X11Forwarding no # 禁止X11轉(zhuǎn)發(fā)
- 檢查配置是否正確
sshd -t
如果沒有報(bào)錯,則可以執(zhí)行第六步。如果有錯誤并且執(zhí)行了第六步,則會導(dǎo)致ssh無法連接。這種情況一般不用重裝服務(wù)器系統(tǒng),可以在服務(wù)器的控制臺使用vnc
登錄(應(yīng)該都有這個(gè)選項(xiàng)的),檢查上面的配置文件是否正確,然后重啟ssh服務(wù)。
- 重啟SSH服務(wù)器:配置完成后,重新啟動SSH服務(wù)器以使更改生效。
sudo service ssh restart # 或 systemctl restart sshd
- 連接到SFTP服務(wù)器:現(xiàn)在,您可以使用SFTP客戶端(如FileZilla、WinSCP或命令行的sftp工具)連接到搭建好的SFTP服務(wù)器。
sftp username@server_ip
提示輸入密碼,并可以開始使用SFTP客戶端進(jìn)行文件傳輸和管理操作。
三、連接測試
3.1 電腦連接
【W(wǎng)inSCP】強(qiáng)大的可視化遠(yuǎn)程文件傳輸 、管理工具 (支持多種協(xié)議,支持電腦與手機(jī))
使用WinSCP新建會話,輸入IP地址,sftp用戶名,密碼即可。
由于在配置文件中有ChrootDirectory /Net_share
這一句目錄的限制,該用戶組的用戶使用sftp連接后,只能查看這個(gè)目錄(及其子目錄)
上圖是我從本地電腦向服務(wù)器上傳的視頻文件,服務(wù)器對應(yīng)的目錄已經(jīng)同步了:
一般服務(wù)器都是有ssh服務(wù)的,因此使用WinSCP的時(shí)候若以root用戶登錄,則可以訪問和修改所有文件,而通過添加sftp用戶的方式,很好的限制了用戶的查看和修改權(quán)限。
3.2 手機(jī)連接
使用一些帶有sftp功能的文件APP就可以連接了,比如owfiles、谷歌的Documents文章來源:http://www.zghlxwxcb.cn/news/detail-470984.html
把 永 遠(yuǎn) 愛 你 寫 進(jìn) 詩 的 結(jié) 尾 ~ 文章來源地址http://www.zghlxwxcb.cn/news/detail-470984.html
到了這里,關(guān)于【Linux】搭建SFTP文件服務(wù)器的文章就介紹完了。如果您還想了解更多內(nèi)容,請?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!