小阿軒yx-FTP文件傳輸服務

小阿軒yx-FTP文件傳輸服務

協議

  • 用來上傳和下載
  • 實現遠程共享文件
  • 統一管理文件

原理?

  • 控制文件的雙向傳輸,是一個應用程序
  • 工作在TCP/IP協議簇的
  • 提高文件傳輸的共享性和可靠性
  • 使用C/S模式的工作方式連接同時處理服務器和客戶端的連接命令和數據傳輸
  • 將命令和數據分開傳輸,提高傳輸效率

端口:21

(注:端口號通常是21,主動模式下20,被動模式下隨機端口)

連接方式兩個階段

  • 管理連接
  • 數據連接

管理連接:客戶端使用隨機端口(要>1024端口,高位端口)---> 連接服務器的21端口

數據連接

主動模式:服務器會使用(20端口)主動向客戶端(隨機端口,高位端口)發起連接(服務器連客戶端)?

被動模式:服務器(隨機端口)等待客戶端(隨機端口)向自己發起連接(客戶端連服務器)

區別

  • 主動模式客戶端的防火墻會攔截服務器發起的連接
  • 被動模式服務器需要處理防火墻(要么關閉、要么添加策略)

兩種傳輸模式?

文本模式

ASCII模式美國信息交換信息標準碼,傳輸文件使用 ASCII 標準字符序列,一般只用于傳輸文件的傳輸

二進制模式

又稱為 Binary 這種模式不會轉換文件中的字符序列,跟適合傳輸程序圖片等非文本文件

Vsftpd可支持最大 15000 并發連接數

FTP兩種模式

主動模式

客戶端使用隨機端口與服務器的21號端口建立控制連接,服務器端主動的使用20號端口向客戶端的隨機端口建立據連接,經過三次握手完成

被動模式

?客戶端使用隨機端口向服務器的21號端口建立管理連接,服務器使用建立好的管理通道向客戶端發送一個隨機的端口號,然后客戶端隨機的向服務器端發過來的端口經過三次握手后建立好這個數據連接

使用兩個端口

  • 控制端口數據端口

  • FTP服務

首先關閉防火墻

[root@localhost ~]# setenforce 0
[root@localhost ~]# systemctl stop firewalld

安裝vsftpd

[root@localhost ~]# yum -y install vsftpd
[root@localhost ~]# systemctl start vsftpd

開啟一個客戶端,在客戶端安裝ftp軟件并測試?

[root@localhost ~]# yum -y install ftp
[root@localhost ~]# ftp 192.168.10.101
Connected to 192.168.10.101 (192.168.10.101).
220 (vsFTPd 3.0.2)
Name (192.168.10.101:root):ftp
331 Please specify the password.
Password:    # 這里直接按Enter就行
230 Login successful.    # 看到這個就是登錄成功了
Remote system type is UNIX.
Using binary mode to transfer files.
ftp> exit    # 這里退出可以用exit、quit、bye
221 Goodbye.

?開啟主動模式并關閉被動模式

[root@localhost ~]# vim /etc/vsftpd/vsftpd.conf 
# 允許服務器主動模式,用20端口連接
connect_from_port_20=YES
# 關閉被動模式
pasv enable=NO

查看vsftpd的配置文件

[root@localhost ~]# vim /etc/vsftpd/vsftpd.conf 
anonymous_enable=YES
local_enable=YES
write_enable=YES
local_umask=022
dirmessage_enable=YES
xferlog_enable=YES
connect_from_port_20=YES
xferlog_std_format=YES
listen=NO
listen_ipv6=YESpam_service_name=vsftpd
userlist_enable=YES
tcp_wrappers=YES

將#號開頭的行刪掉

[root@localhost ~]# sed -i '/^#/d' /etc/vsftpd/vsftpd.conf

三種用戶登錄方式

本地用戶模式

  • localhost_enable=YES? ? ? ? //允許本地用戶訪問
  • Write_enable=YES? ? ? ? ? ? ? //本地用戶的寫入權限
  • Local_umask=002? ? ? ? ? ? ? ?//本地用戶上傳文件的權限減去這個umask值
  • Userlist_deny=YES? ? ? ? ? ? ? //是否禁用user_list列表中的用戶賬號,若啟用必須等于==NO
  • Userlist_enable=YES? ? ? ? ? //是否啟用user_list列表中的用戶無法登錄User_list白名單文件,如果設置userlist_deny=NO ?Userlist_enable=YES則只允許該列表中的用戶登錄若一個用戶同時存在兩個文件中,黑名單生效,該用戶不能登錄

虛擬用戶模式

  • 可以將用戶的登錄名和密碼設置不相同

  • 提高服務器的安全性

第一步:創建文本格式的用戶名和密碼 ?奇數行為用戶名,偶數行為密碼

第二步:建立虛擬FTP用戶的數據庫文件

第三步:添加虛擬用戶的映射賬號

第三步:為虛擬用戶建立PAM認證文件

第四步:修改配置文件添加虛擬用戶的支持

Local_enable=YES ?#需要映射本地用戶所以啟用

Write_enable=YES ?##啟用上傳寫入權限

Guest_enable=YES ?##開啟虛擬用戶

Anon_umask=022 ### 指定上次權限掩碼

Guest_username=* ?###指定映射的本地系統用戶

Pam_serrivce_name=vsftpd.vu ?##指定新的pam認證文件

User_config_dir=/*/*/*/ ??###為不同的虛擬用戶設置不同的權限

匿名用戶

匿名訪問 FTP 服務

  • FTP無需密碼直接登錄(有時賬號也不需要)
  • 妥善設置權限不要太高,一般僅允許下載
準備匿名 FTP 訪問目錄
[root@localhost ~]# touch /var/ftp/test
[root@localhost ~]# chown ftp /var/ftp/pub
[root@localhost ~]# chmod 755 /var/ftp/pub
[root@localhost ~]# cd/var/ftp/pub
開放匿名用戶

添加以下內容

[root@localhost ftp]# vim /etc/vsftpd/vsftpd.conf
anon_umask=022
anon_upload_enable=yes
anon_mkdir_write_enable=yes
anon_other_write_enable=yes

重啟服務?

[root@localhost ~]# systemctl restart vsftpd

找出運行在指定端口的進程?

[root@localhost ~]# netstat -anpt | grep vsftpd
測試匿名 FTP 服務器

測試訪問

[root@localhost ~]# ftp 192.168.10.101
Connected to 192.168.10.101 (192.168.10.101).
220 (vsFTPd 3.0.2)
Name (192.168.10.101:root): ftp
331 Please specify the password.
Password:
230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp> dir
227 Entering Passive Mode (192,168,10,101,221,180).
150 Here comes the directory listing.
drwxr-xr-x    2 14       0               6 Nov 05  2016 pub
-rw-r--r--    1 0        0               0 May 20 02:14 test
-rw-r--r--    1 0        0               0 May 20 02:14 text
226 Directory send OK.
ftp> lcd /opt
Local directory now /opt
ftp> get test
local: test remote: test
227 Entering Passive Mode (192,168,10,101,141,88).
150 Opening BINARY mode data connection for test (0 bytes).
226 Transfer complete.
ftp> lcd /root
Local directory now /root
ftp> cd pub
250 Directory successfully changed.
ftp> put initial-setup-ks.cfg 
local: initial-setup-ks.cfg remote: initial-setup-ks.cfg
200 PORT command successful. Consider using PASV.
150 Ok to send data.
226 Transfer complete.
1638 bytes sent in 0.00327 secs (501.22 Kbytes/sec)
ftp> quit
221 Goodbye.

wget測試

[root@localhost ~]# wget ftp://192.168.10.101/pub/111
--2021-11-16 09:50:15--  ftp://192.168.10.101/pub/111=> “111”
正在連接 192.168.10.101:21... 已連接。
正在以 anonymous 登錄 ... 登錄成功!
==> SYST ... 完成。   ==> PWD ... 完成。
==> TYPE I ... 完成。 ==> CWD (1) /pub ... 完成。
==> SIZE 111 ... 完成。
==> PASV ... 完成。   ==> RETR 111 ... 完成。[ <=>                                   ] 0           --.-K/s 用時 0s      2021-11-16 09:50:15 (0.00 B/s) - “111” 已保存 [0]

?用戶驗證的 FTP 服務

本地用戶驗證配置

[root@localhost ~]# vim /etc/vsftpd/vsftpd.conf 
#anon_upload_enable=yes
#anon_mkdir_write_enable=yes
#anon_other_write_enable=yes
......省略部分內容
chroot_local_user=yes
allow_writeable_chroot=yes
listen=NO
listen_ipv6=YES
開啟root訪問權限
[root@localhost ~]# vim /etc/vsftpd/user_list 
# 在root賬號前價格注釋符
#root
編輯配置文件
[root@localhost ~]# vim /etc/vsftpd/vsftpd.conf 
anonymous_enable=YES
anon_umask=022
#anon_upload_enable=yes
#anon_mkdir_write_enable=yes
#anon_other_write_enable=yes
重啟服務
[root@localhost ~]# systemctl restart vsftpd
修改監聽地址與端口
[root@localhost ~]# vim /etc/vsftpd/vsftpd.conf
listen=YES
listen_address=192.168.10.101    # 添加監聽地址
listen_port=2121                 #添加監聽端口
listen_ipv6=no
[root@localhost ~]# ftp 192.168.10.101 2121
# 使用ftp的被動模式
pasv_enable=yes
pasv_min_port=24500
pasv_max_port=24600

重啟服務

[root@localhost ~]# systemctl restart vsftpd
客戶端測試?
[root@localhost ~]# touch aaa
[root@localhost ~]# ftp 192.168.10.101
Connected to 192.168.10.101 (192.168.10.101).
220 (vsFTPd 3.0.2)
Name (192.168.10.101:root): zhangsan
331 Please specify the password.
Password:
230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp> put aaa
local: aaa remote: aaa
227 Entering Passive Mode (192,168,10,101,114,218).
150 Ok to send data.
226 Transfer complete.
ftp> quit
221 Goodbye.

擴展

修改匿名用戶的目錄

[root@localhost ~]# mkdir -p /opt/ftp/myftp
[root@localhost ~]# chown ftp /opt/ftp/myftp

修改配置文件

[root@localhost ~]# vim /etc/vsftpd/vsftpd.conf 
# 添加以下字段:
anon_root=/opt/ftp

修改系統用戶的根目錄

[root@localhost ~]# vim /etc/vsftpd/vsftpd.conf 
# 添加以下字段:
#anon_root=/opt/ftp
local_root=/opt/ftp
授權用戶
  • 識別賬號并授權
  • 比匿名用戶高級
  • 賬號密碼:密碼直接敲回車,不用輸入密碼

ftp服務分為

  • 服務器端(vsftpd)
  • 客戶端(ftp)

文件:666-022

目錄:777-022?

(注:022是反掩碼)

xinetd超級服務:代替ftp類的服務,監聽其對應的端口,如果有應用訪問這個端口,立即喚醒ftp這個程序

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/bicheng/14964.shtml
繁體地址,請注明出處:http://hk.pswp.cn/bicheng/14964.shtml
英文地址,請注明出處:http://en.pswp.cn/bicheng/14964.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

【NumPy】NumPy實戰入門:線性代數(dot、linalg)與隨機數(numpy.random)詳解

&#x1f9d1; 博主簡介&#xff1a;阿里巴巴嵌入式技術專家&#xff0c;深耕嵌入式人工智能領域&#xff0c;具備多年的嵌入式硬件產品研發管理經驗。 &#x1f4d2; 博客介紹&#xff1a;分享嵌入式開發領域的相關知識、經驗、思考和感悟&#xff0c;歡迎關注。提供嵌入式方向…

Modular RPG Hero PBR

-掩碼著色著色器提供了無限的顏色變化。(適用于標準/HDRP/URP 11.0.0) -為劍與盾/雙劍/雙劍姿態提供了簡單的角色控制器。(不包括弓和魔杖控制器)(它是用舊的輸入系統建造的) -HDRP/URP(11.0.0)SRP 100%支持常規著色器和遮罩著色著色器(基于著色器圖形) -具有許多模塊…

rtk技術的使用, test ok

1. 什么是gnss 2 rtk定位

邏輯回歸模型的背景與應用

1.1邏輯回歸模型的背景與應用 邏輯回歸模型&#xff0c;作為一種經典的機器學習方法&#xff0c;起源于統計學領域。在眾多實際應用場景中&#xff0c;邏輯回歸模型都發揮著重要作用&#xff0c;尤其在分類問題中。當我們需要對具有離散特征的數據進行建模和預測時&#xff0c…

五分鐘部署開源運維平臺Spug結合內網穿透實現遠程登錄管理

文章目錄 前言1. Docker安裝Spug2 . 本地訪問測試3. Linux 安裝cpolar4. 配置Spug公網訪問地址5. 公網遠程訪問Spug管理界面6. 固定Spug公網地址 前言 Spug 面向中小型企業設計的輕量級無 Agent 的自動化運維平臺&#xff0c;整合了主機管理、主機批量執行、主機在線終端、文件…

移除元素-力扣

第一種解法&#xff0c;暴力解法&#xff0c;使用兩個for循環一個進行遍歷&#xff0c;一個進行覆蓋&#xff0c;代碼如下&#xff1a; class Solution { public:int removeElement(vector<int>& nums, int val) {int size nums.size();for(int i 0; i < size; …

C語言中的 ?: :三元運算符詳解

C語言中的 ?: &#xff1a;三元運算符詳解 在C語言的浩瀚代碼海洋中&#xff0c;三元運算符&#xff08;?:&#xff09;如同一位優雅的舞者&#xff0c;以簡潔的姿態完成條件判斷與賦值的雙重任務。它以問號&#xff08;?&#xff09;和冒號&#xff08;:&#xff09;這兩個…

Linux完整版命令大全(九)

4. linux壓縮備份命令 ar 功能說明&#xff1a;建立或修改備存文件&#xff0c;或是從備存文件中抽取文件。語  法&#xff1a;ar[-dmpqrtx][cfosSuvV][a<成員文件>][b<成員文件>][i<成員文件>][備存文件][成員文件]補充說明&#xff1a;ar可讓您集合許多…

Spring boot 注入成員變量HttpServletRequest的原理

前言 最近做項目&#xff0c;springboot項目&#xff0c;本來我們在controller的requestmapping取參數值或者返回寫時&#xff0c;使用方法參數&#xff0c;但是發現老項目直接注入了成員變量&#xff0c;Spring本身是單例的&#xff0c;如果是成員變量注入&#xff0c;那么也…

【C語言】指針(三)

目錄 一、字符指針 1.1 ? 使用場景 1.2 ? 有關字符串筆試題 二、數組指針 2.1 ? 數組指針變量 2.2 ? 數組指針類型 2.3 ? 數組指針的初始化 三、數組指針的使用 3.1 ? 二維數組和數組名的理解 3.2 ? 二維數組傳參 四、函數指針 4.1 ? 函數的地址 4.2 ? 函數…

JAVA面試題大全(十一)

1、為什么要使用 hibernate&#xff1f; 對JDBC訪問數據庫的代碼做了封裝&#xff0c;大大簡化了數據訪問層繁瑣的重復性代碼基于jdbc的主流持久化框架&#xff0c;是一個優秀的ORM實現&#xff0c;很大程度的簡化了dao層的編碼工作使用java的反射機制性能好&#xff0c;是一個…

【STL】C++ list 基本使用

目錄 一 list 常見構造 1 空容器構造函數&#xff08;默認構造函數&#xff09; 2 Fill 構造函數 3 Range 構造函數 4 拷貝構造函數 二 list迭代器 1 begin && end 2 rbegin && rend 三 list 容量操作 四 list 修改操作 1 assign 2 push_front &a…

【深度學習中的數據預處理技巧:提升模型性能的關鍵步驟】

文章目錄 前言數據標準化&#xff08;Normalization&#xff09;數據增強&#xff08;Data Augmentation&#xff09;缺失值處理&#xff08;Handling Missing Values&#xff09;特征編碼&#xff08;Feature Encoding&#xff09;結論 前言 在深度學習領域&#xff0c;數據預…

牛客NC362 字典序排列【中等 DFS Java/Go/PHP】

題目 題目鏈接&#xff1a; https://www.nowcoder.com/practice/de49cf70277048518314fbdcaba9b42c 解題方法 DFS&#xff0c;剪枝Java代碼 import java.util.*;public class Solution {/*** 代碼中的類名、方法名、參數名已經指定&#xff0c;請勿修改&#xff0c;直接返回…

【小筆記】如何在docker中更新或導入neo4j數據?

如何在docker中更新或導入neo4j數據&#xff1f; &#xff08;1&#xff09;背景&#xff1a; 我嘗試了4.4.9和5.19.0版本的Neo4j社區版&#xff0c;基于他們的鏡像創建容器后&#xff0c;需要導入我準備好的csv文件或dump文件&#xff0c;因為數據量非常大&#xff0c;所以采…

2024電工杯數學建模B題Python代碼+結果表數據教學

2024電工杯B題保姆級分析完整思路代碼數據教學 B題題目&#xff1a;大學生平衡膳食食譜的優化設計及評價 以下僅展示部分&#xff0c;完整版看文末的文章 import pandas as pd df1 pd.read_excel(附件1&#xff1a;1名男大學生的一日食譜.xlsx) df1# 獲取所有工作表名稱 e…

HarmonyOS-MPChart繪制一條虛實相接的曲線

本文是基于鴻蒙三方庫mpchart&#xff08;OpenHarmony-SIG/ohos-MPChart&#xff09;的使用&#xff0c;自定義繪制方法&#xff0c;繪制一條虛實相接的曲線。 mpchart本身的繪制功能是不支持虛實相接的曲線的&#xff0c;要么完全是實線&#xff0c;要么完全是虛線。那么當我…

面試總結之:socket線路切換

"socket線路切換"通常指的是在網絡通信過程中,根據當前網絡狀態或策略來動態更換數據傳輸路徑的技術。這種技術可以提高通信的可靠性和性能。 在實際應用中,線路切換可能涉及到多種技術,例如: 負載均衡:根據每條路徑的當前負載情況,動態地選擇一條較為空閑的路…

MySql超大Sql文件導入效率優化 —— 筑夢之路

使用場景 日常我們對mysql數據庫、mariadb數據庫進行定時備份&#xff0c;而隨著時間增長&#xff0c;導出來的備份文件越來越大&#xff0c;使用備份sql文件進行還原的時候&#xff0c;大文件非常慢&#xff0c;有些要執行很長時間&#xff0c;效率很低。 如何優化&#xff…

根據多個坐標經緯度獲取到中心點的經緯度,scala語言

文章目錄 前言scala 代碼 總結 前言 Scala 語言 通過多個經緯度坐標點, 計算出中心點, 這里使用的是 Scala 語言,其他的語言需要自行轉換。求出來的并不是原有的點&#xff0c;而是原有點的中心位置的點。 scala 代碼 package com.dw.process.midimport java.lang.Double.pa…