FTP(File Transfer Protocol)
是TCP/IP網絡上兩台計算機傳送文件的協議,FTP是在TCP/IP網絡和INTERNET上最早使用的協議之一,它屬於網絡協議組的應用層。FTP客戶機可以給服務器發出命令來下載文件,上載文件,創建或改變服務器上的目錄。相比於HTTP,FTP協議要復雜得多。復雜的原因,是因為FTP協議要用到兩個TCP連接,一個是命令鏈路,用來在FTP客戶端與服務器之間傳遞命令;另一個是數據鏈路,用來上傳或下載數據。FTP是基於TCP協議的,因此iptables防火牆設置中只需要放開指定端口(21 + PASV端口范圍)的TCP協議即可。
FTP工作模式:
PORT(主動)方式的連接過程是:客戶端向服務器的FTP端口(默認是21)發送連接請求,服務器接受連接,建立一條命令鏈路。當需要傳送數據時,客戶端在命令鏈路上用PORT命令告訴服務器:“我打開了一個1024+的隨機端口,你過來連接我”。於是服務器從20端口向客戶端的1024+隨機端口發送連接請求,建立一條數據鏈路來傳送數據。
PASV(Passive被動)方式的連接過程是:客戶端向服務器的FTP端口(默認是21)發送連接請求,服務器接受連接,建立一條命令鏈路。當需要傳送數據時,服務器在命令鏈路上用PASV命令告訴客戶端:“我打開了一個1024+的隨機端口,你過來連接我”。於是客戶端向服務器的指定端口發送連接請求,建立一條數據鏈路來傳送數據。
PORT方式,服務器會主動連接客戶端的指定端口,那么如果客戶端通過代理服務器鏈接到internet上的網絡的話,服務器端可能會連接不到客戶端本機指定的端口,或者被客戶端、代理服務器防火牆阻塞了連接,導致連接失敗。PASV方式,服務器端防火牆除了要放開21端口外,還要放開PASV配置指定的端口范圍。
PASV(Passive被動)方式的連接過程是:客戶端向服務器的FTP端口(默認是21)發送連接請求,服務器接受連接,建立一條命令鏈路。當需要傳送數據時,服務器在命令鏈路上用PASV命令告訴客戶端:“我打開了一個1024+的隨機端口,你過來連接我”。於是客戶端向服務器的指定端口發送連接請求,建立一條數據鏈路來傳送數據。
PORT方式,服務器會主動連接客戶端的指定端口,那么如果客戶端通過代理服務器鏈接到internet上的網絡的話,服務器端可能會連接不到客戶端本機指定的端口,或者被客戶端、代理服務器防火牆阻塞了連接,導致連接失敗。PASV方式,服務器端防火牆除了要放開21端口外,還要放開PASV配置指定的端口范圍。
SFTP(Secure File Transfer Protocol)
安全文件傳送協議。可以為傳輸文件提供一種安全的加密方法。SFTP與 FTP有着幾乎一樣的語法和功能。SFTP為SSH的一部份,是一種傳輸文件到服務器的安全方式。在SSH軟件包中,已經包含了一個叫作SFTP(Secure File Transfer Protocol)的安全文件傳輸子系統,SFTP本身沒有單獨的守護進程,它必須使用sshd守護進程(端口號默認是22)來完成相應的連接操作,所以從某種意義上來說,SFTP並不像一個服務器程序,而更像是一個客戶端程序。SFTP同樣是使用加密傳輸認證信息和傳輸的數據,所以,使用SFTP是非常安全的。但是,由於這種傳輸方式使用了加密/解密技術,所以傳輸效率比普通的FTP要低得多,如果您對網絡安全性要求更高時,可以使用SFTP代替FTP。
登陸遠程主機: sftp user@host 針對本機的命令都加上l: lcd,lpwd 將本機文件上傳到遠程: put filename.txt [some/directory] 將當前文件夾下的文件上傳到遠程: mput *.* // multiple 下載遠程文件到本地: get filename.file [some/directory] 下載目錄下所有遠程文件到本地: mget *.* [some/directory] 幫助: ? 退出: bye/exit/quit
SCP(Secure Copy)
SCP就是Secure copy,是用來進行遠程文件復制的,並且整個復制過程是加密的。數據傳輸使用ssh,並且和使用和ssh相同的認證方式,提供相同的安全保證。
拷貝本地文件到遠程: scp filename.txt user@host:some/directory 拷貝本地文件到遠程,使用指定端口: scp -P 2234 filename.txt user@host:some/directory 拷貝多個文件到遠程home: scp filename1.txt filename2.txt user@host:~ 拷貝遠程文件到本地: scp user@host:directory/filename.txt /directory 拷貝遠程文件夾到本地: scp -r user@host:directory/folder . 拷貝遠程文件到遠程: scp user@host1:directory/filename.txt user@host1:directory