中文亚洲精品无码_熟女乱子伦免费_人人超碰人人爱国产_亚洲熟妇女综合网

當前位置: 首頁 > news >正文

2018年網(wǎng)站建設培訓會發(fā)言營銷互聯(lián)網(wǎng)推廣公司

2018年網(wǎng)站建設培訓會發(fā)言,營銷互聯(lián)網(wǎng)推廣公司,手機怎么做網(wǎng)站服務器,網(wǎng)站高端建設文件共享 - FTP1 FTP1.1 傳輸方式1. ASCII傳輸方式2. 二進制傳輸模式3. 兩種傳輸方式的區(qū)別1.2 支持的模式1. 主動模式(PORT)2. 被動模式(PASV)3. 如何選擇4. 為什么絕大部分互聯(lián)網(wǎng)應用都是被動模式?1.3 搭建FTP服務器(使用vsftpd)1. 安裝軟件…

文件共享 - FTP

    • 1 FTP
      • 1.1 傳輸方式
        • 1. ASCII傳輸方式
        • 2. 二進制傳輸模式
        • 3. 兩種傳輸方式的區(qū)別
      • 1.2 支持的模式
        • 1. 主動模式(PORT)
        • 2. 被動模式(PASV)
        • 3. 如何選擇
        • 4. 為什么絕大部分互聯(lián)網(wǎng)應用都是被動模式?
      • 1.3 搭建FTP服務器(使用vsftpd)
        • 1. 安裝軟件
        • 2. 關閉防火墻
        • 3. 啟動vsftpd服務
        • 4. 查看端口
        • 5. 主配置文件
        • 6. 默認目錄
        • 7. 登錄ftp
        • 8. 基本指令
        • 9. 示例
    • 2 FTPS
      • 2.1 兩種模式
        • 1. FTPS 隱式 SSL
        • 2. FTPS 顯式 SSL
      • 2.2 搭建FTPS服務器
        • 1. 編輯openssl配置文件
        • 2. 生成相關文件
        • 3. 搭建本地CA服務器
        • 4. 給自己發(fā)證
        • 5. 修改vsftpd配置文件/etc/vsftpd/vsftpd.conf
        • 6.重啟服務,進行測試
    • 3 SFTP
      • 3.1 SFTP數(shù)據(jù)傳輸過程
      • 3.2 搭建sftp
        • 1. 關閉防火墻和selinux
        • 2. 安裝SSH服務
        • 3. 新建用戶和SFTP目錄
        • 4. 配置SSH和SFTP服務器
        • 5. 重啟并配置防火墻
        • 6. 訪問測試
        • 7. SFTP常用命令
    • 4 SFTP 和FTPS的區(qū)別
    • 5 常見連接錯誤

本文將介紹FTP/SFTP/FTPS使用方法
?

1 FTP

FTP 是File Transfer Protocol(文件傳輸協(xié)議)的英文簡稱,而中文簡稱為“文傳協(xié)議”。用于Internet上的控制文件的雙向傳輸。同時,它也是一個應用程序(Application)?;诓煌牟僮飨到y(tǒng)有不同的FTP應用程序,而所有這些應用程序都遵守同一種協(xié)議以傳輸文件。在FTP的使用當中,用戶經(jīng)常遇到兩個概念:”下載”(Download)和”上傳”(Upload)?!毕螺d”文件就是從遠程主機拷貝文件至自己的計算機上;”上傳”文件就是將文件從自己的計算機中拷貝至遠程主機上。用Internet語言來說,用戶可通過客戶機程序向(從)遠程主機上傳(下載)文件。

與大多數(shù)Internet服務一樣,FTP也是一個客戶機/服務器系統(tǒng)。用戶通過一個支持FTP協(xié)議的客戶機程序,連接到在遠程主機上的FTP服務器程序。用戶通過客戶機程序向服務器程序發(fā)出命令,服務器程序執(zhí)行用戶所發(fā)出的命令,并將執(zhí)行的結果返回到客戶機。比如說,用戶發(fā)出一條命令,要求服務器向用戶傳送某一個文件的一份拷貝,服務器會響應這條命令,將指定文件送至用戶的機器上。客戶機程序代表用戶接收到這個文件,將其存放在用戶目錄中。

1.1 傳輸方式

FTP的傳輸有兩種方式:ASCII、二進制。

1. ASCII傳輸方式

假定用戶正在拷貝的文件包含的簡單ASCII碼文本,如果在遠程機器上運行的不是UNIX,當文件傳輸時ftp通常會自動地調整文件的內容以便于把文件解釋成另外那臺計算機存儲文本文件的格式。
但是常常有這樣的情況,用戶正在傳輸?shù)奈募牟皇俏谋疚募?#xff0c;它們可能是程序,數(shù)據(jù)庫,字處理文件或者壓縮文件。在拷貝任何非文本文件之前,用binary 命令告訴ftp逐字拷貝。

2. 二進制傳輸模式

在二進制傳輸中,保存文件的位序,以便原始和拷貝的是逐位一一對應的。即使目的地機器上包含位序列的文件是沒意義的。例如,macintosh以二進制方式傳送可執(zhí)行文件到Windows系統(tǒng),在對方系統(tǒng)上,此文件不能執(zhí)行。

如在ASCII方式下傳輸二進制文件,即使不需要也仍會轉譯。這會損壞數(shù)據(jù)。(ASCII方式一般假設每一字符的第一有效位無意義,因為ASCII字符組合不使用它。如果傳輸二進制文件,所有的位都是重要的。)

3. 兩種傳輸方式的區(qū)別

ASCII模式和Binary模式的區(qū)別是回車換行的處理,Binary模式不對數(shù)據(jù)進行任何處理,ASCII模式將回車換行轉換為本機的回車字符,比如:UNIX下是\n,Windows下是\r\n,Mac下是\r。

ASCII模式下會轉換文件,不能說是不同系統(tǒng)對回車換行解釋不同,而是不同的系統(tǒng)有不同的行結束符。UNIX系統(tǒng)下行結束符是一個字節(jié),即十六進制的0A,而Windows的系統(tǒng)是兩個字節(jié),即十六進制的0D0A,所以當你用ASCII方式從UNIX的FTP Server下載文件到Windows系統(tǒng)上時(不管是二進制或者文本文件),每檢測到一個字節(jié)是0A,就會自動插入一個0D,所以如果你的文件是二進制文件,比如可執(zhí)行文件、壓縮包什么的,就肯定不能用了。如果你的文件就是UNIX下的文本文件,你用ASCII模式是正確的,要是誤用了Binary模式,你在Windows上看這個文件是沒有換行的,里面是一個個的黑方塊。

一般來說,我們最好都用Binary方式,這樣可以保證不出錯。如果有文本格式轉換的問題,即UNIX格式的文本和DOS格式的文本之間的轉換,有很多工具可以做的,不要在ftp傳輸?shù)臅r候冒險,尤其是你如果對這些東西不是非常清楚的話。

1.2 支持的模式

1. 主動模式(PORT)

主動模式的工作原理:FTP客戶端連接到FTP服務器的21端口,發(fā)送用戶名和密碼登錄,登錄成功后要list列表或者讀取數(shù)據(jù)時,客戶端隨機開放一個端口(1024以上),發(fā)送 PORT命令到FTP服務器,告訴服務器客戶端采用主動模式并開放端口;FTP服務器收到PORT主動模式命令和端口號后,通過服務器的20端口和客戶端開放的端口連接,發(fā)送數(shù)據(jù)。

2. 被動模式(PASV)

被動模式的工作原理:FTP客戶端連接到FTP服務器的21端口,發(fā)送用戶名和密碼登錄,登錄成功后要list列表或者讀取數(shù)據(jù)時,發(fā)送PASV(PASV是Passive的縮寫)命令到FTP服務器, 服務器在本地隨機開放一個端口(1024以上),然后把開放的端口告訴客戶端, 客戶端再連接到服務器開放的端口進行數(shù)據(jù)傳輸。原理如下圖:
在這里插入圖片描述

3. 如何選擇

如果工作中一定要使用FTP服務器,在今天的互聯(lián)網(wǎng)環(huán)境里面,使用FTP被動模式進行連接傳輸就可以了。如果只是想知道答案的朋友,看到這里就可以了。對技術和原理感興趣的朋友,請繼續(xù)往下看。
從上面的運行原理可以看到,主動模式和被動模式區(qū)別簡單概述為:

  • a. 主動模式傳送數(shù)據(jù)時是“服務器”連接到“客戶端”的端口;被動模式傳送數(shù)據(jù)是“客戶端”連接到“服務器”的端口。
  • b.主動模式需要客戶端必須開放端口給服務器,很多客戶端都是在防火墻內,開放端口給FTP服務器訪問比較困難;被動模式只需要服務器端開放端口給客戶端連接就行了。

需要注意的是,被動模式和主動模式的登錄過程,都是FTP客戶端去連接FTP服務器。

4. 為什么絕大部分互聯(lián)網(wǎng)應用都是被動模式?

因為大部分客戶端都是在路由器后面,沒有獨立的公網(wǎng)IP地址,服務器想要主動連接客戶端,難度太大,在現(xiàn)在真實的互聯(lián)網(wǎng)環(huán)境里面幾乎是不可能完成的任務。在FTP服務器部署的時候,其默認采用的是主動操作模式。如果企業(yè)FTP服務器的用戶都是在內部網(wǎng)絡中的,即不用像外部網(wǎng)絡的用戶提供FTP連接的需求,那么采用這個默認操作方式就可以了。但是如果一些出差在外的員工或者員工在家庭辦公時也需要訪問企業(yè)內部的FTP服務器,而此時出于安全的考慮或者公網(wǎng)IP 地址數(shù)量的限制,企業(yè)往往會把FTP服務器部署在防火墻或者NAT服務器的后面,此時這個主動操作模式就不行了。

總之,在FTP服務器部署的時候考慮是要采用主動操作模式還是被動操作模式,只需要記住一個原則,即如果把FTP服務器部署在防火墻或者NAT服務器的背后,則采用主動操作模式的客戶端只能夠建立命令連接而無法進行文件傳輸。如果部署完FTP服務器后,系統(tǒng)管理員發(fā)現(xiàn)用戶可以連接上FTP服務器,可以查看目錄下的文件,但是卻無法下載或者上傳文件,如果排除權限方面的限制外,那么很有可能就是這個操作模式選擇錯誤。系統(tǒng)管理員告訴用戶選擇合適的操作模式, 基本上就可以解決文件傳輸?shù)膯栴}了。

1.3 搭建FTP服務器(使用vsftpd)

1. 安裝軟件

yum -y install vsftpd

2. 關閉防火墻

firewall-cmd --state
systemctl stop firewalld

3. 啟動vsftpd服務

systemctl start vsftpd
systemctl enable vsftpd

4. 查看端口

[root@node1 ~]# netstat -antup | grep ftp
tcp6       0      0 :::21                   :::*                    LISTEN      87368/vsftpd

5. 主配置文件

主配置文件/etc/vsftpd/vsftpd.conf

#修改下列參數(shù)的值:anonymous_enable=NO			#禁止匿名登錄FTP服務器。local_enable=YES			#允許本地用戶登錄FTP服務器。listen=YES					#監(jiān)聽IPv4 sockets。#=========================================================================================
#在行首添加#注釋掉以下參數(shù):#listen_ipv6=YES			#關閉監(jiān)聽IPv6 sockets。#=========================================================================================
#在配置文件的末尾添加下列參數(shù):local_root=/var/ftp/test	#設置本地用戶登錄后所在目錄。chroot_local_user=YES		#全部用戶被限制在主目錄。chroot_list_enable=YES		#啟用例外用戶名單。chroot_list_file=/etc/vsftpd/chroot_list	#指定例外用戶列表文件,列表中用戶不被鎖定在主目錄。pasv_enable=YES				#開啟被動模式。allow_writeable_chroot=YES	#允許更改主目錄內容pasv_address=<FTP服務器公網(wǎng)IP地址>	#Linux實例的公網(wǎng)IP。pasv_min_port=<port number>	#設置被動模式下,建立數(shù)據(jù)傳輸可使用的端口范圍的最小值。建議您把端口范圍設置在一段比較高的范圍內,例如50000~50010,有助于提高訪問FTP服務器的安全性。pasv_max_port=<port number>	#設置被動模式下,建立數(shù)據(jù)傳輸可使用的端口范圍的最大值。

① 實現(xiàn)可以匿名登錄,創(chuàng)建文件夾

sed -i 's/anonymous_enable=YES/anonymous_enable=NO/' /etc/vsftpd/vsftpd.conf #禁止匿名登錄FTP服務器sed -i 's/listen=NO/listen=YES/' /etc/vsftpd/vsftpd.conf #監(jiān)聽IPv4 socketssed -i 's/listen_ipv6=YES/#listen_ipv6=YES/' /etc/vsftpd/vsftpd.conf #關閉監(jiān)聽IPv6 socketssed -i 's/#chroot_local_user=YES/chroot_local_user=YES/' /etc/vsftpd/vsftpd.conf #全部用戶被限制在主目錄sed -i 's/#chroot_list_enable=YES/chroot_list_enable=YES/' /etc/vsftpd/vsftpd.conf #啟用例外用戶名單sed -i 's/#chroot_list_file=/chroot_list_file=/' /etc/vsftpd/vsftpd.conf #指定例外用戶列表文件,列表中的用戶不被鎖定在主目錄echo "allow_writeable_chroot=YES" >> /etc/vsftpd/vsftpd.confecho "local_root=/var/ftp/test" >> /etc/vsftpd/vsftpd.conf #設置本地用戶登錄后所在的目錄echo "pasv_enable=YES" >> /etc/vsftpd/vsftpd.conf #開啟被動模式echo "pasv_address=<47.103.143.207>" >> /etc/vsftpd/vsftpd.conf #本教程中為ECS服務器彈性IPecho "pasv_min_port=20" >> /etc/vsftpd/vsftpd.conf #設置被動模式下,建立數(shù)據(jù)傳輸可使用的端口范圍的最小值echo "pasv_max_port=21" >> /etc/vsftpd/vsftpd.conf #設置被動模式下,建立數(shù)據(jù)傳輸可使用的端口范圍的最大值

② 添加例外用戶名單

編輯chroot_list文件,添加例外用戶名單。此名單中的用戶不會被鎖定在主目錄,可以訪問其他目錄。

說明: 沒有例外用戶時,也必須創(chuàng)建chroot_list文件,內容可為空。

③ 重啟vsftpd服務。

[root@node1 ~]# systemctl restart vsftpd

④ linux訪問ftp
需要下載ftp 客戶端(注意vsftpd是服務端)

yum -y install ftp

6. 默認目錄

如果是默認安裝vsftpd的話,以下是一些文件的位置約定:

  • /usr/sbin/vsftpd ---- VSFTPD的主程序
  • /etc/rc.d/init.d/vsftpd ---- 啟動腳本
  • /etc/vsftpd/vsftpd.conf ---- 主配置文件
  • /etc/pam.d/vsftpd ---- PAM認證文件
  • /etc/vsftpd.ftpusers ---- 禁止使用VSFTPD的用戶列表文件
  • /etc/vsftpd.user_list ---- 禁止或允許使用VSFTPD的用戶列表文件
  • /var/ftp ---- 匿名用戶主目錄
  • /var/ftp/pub ---- 匿名用戶的下載目錄

如果要更改默認下載目錄,修改/etc/vsftpd/vsftpd.conf,加入如下三行:

local_root=/
chroot_local_user=YES
anon_root=/

local_root表示使用本地用戶登錄到ftp時的默認目錄
anon_root表示匿名用戶登錄到ftp時的默認目錄
默認的chroot_list_file是設定鎖定登陸用戶在其home目錄的列表,要在chroot_list_enable=YES情況下才生效。

7. 登錄ftp

vsftpd的配置,配置文件中限定了vsftpd用戶連接控制配置。

  • ftpusers:位于/etc/vsftpd目錄下。它指定了哪些用戶賬戶不能訪問FTP服務器,例如root等。
  • user_list:位于/etc/vsftpd目錄下。該文件里的用戶賬戶在默認情況下也不能訪問FTP服務器,僅當vsftpd .conf配置文件里啟用userlist_enable=NO選項時才允許訪問。

其他的賬號正常都可以訪問ftp了

[root@zabbix-svr-2 conf.d]# ftp 192.168.71.183
Connected to 192.168.71.183 (192.168.71.183).
220 (vsFTPd 3.0.2)
Name (192.168.71.183:root): yurq
331 Please specify the password.
Password:
230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp>

8. 基本指令

ftp> ascii # 設定以ASCII方式傳送文件(缺省值)
ftp> bell  # 每完成一次文件傳送,報警提示.
ftp> binary # 設定以二進制方式傳送文件.
ftp> bye  # 終止主機FTP進程,并退出FTP管理方式.
ftp> case # 當為ON時,用MGET命令拷貝的文件名到本地機器中,全部轉換為小寫字母.
ftp> cd   # 同UNIX的CD命令.
ftp> cdup  # 返回上一級目錄.
ftp> chmod # 改變遠端主機的文件權限.
ftp> close # 終止遠端的FTP進程,返回到FTP命令狀態(tài), 所有的宏定義都被刪除.
ftp> delete # 刪除遠端主機中的文件.
ftp> dir [remote-directory] [local-file] # 列出當前遠端主機目錄中的文件.如果有本地文件,就將結果寫至本地文件.
ftp> get [remote-file] [local-file] # 從遠端主機中傳送至本地主機中.
ftp> help [command] # 輸出命令的解釋.
ftp> lcd # 改變當前本地主機的工作目錄,如果缺省,就轉到當前用戶的HOME目錄.
ftp> ls [remote-directory] [local-file] # 同DIR.
ftp> macdef # 定義宏命令.
ftp> mdelete [remote-files] # 刪除一批文件.
ftp> mget [remote-files]  # 從遠端主機接收一批文件至本地主機.
ftp> mkdir directory-name  # 在遠端主機中建立目錄.
ftp> mput local-files # 將本地主機中一批文件傳送至遠端主機.
ftp> open host [port] # 重新建立一個新的連接.
ftp> prompt  # 交互提示模式.
ftp> put local-file [remote-file] # 將本地一個文件傳送至遠端主機中.
ftp> pwd # 列出當前遠端主機目錄.
ftp> quit # 同BYE.
ftp> recv remote-file [local-file] # 同GET.
ftp> rename [from] [to]   # 改變遠端主機中的文件名.
ftp> rmdir directory-name  # 刪除遠端主機中的目錄.
ftp> send local-file [remote-file] # 同PUT.
ftp> status  # 顯示當前FTP的狀態(tài).
ftp> system  # 顯示遠端主機系統(tǒng)類型.
ftp> user user-name [password] [account] # 重新以別的用戶名登錄遠端主機.
ftp> ? [command] # 同HELP. [command]指定需要幫助的命令名稱。如果沒有指定 command,ftp 將顯示全部命令的列表。
ftp> ! # 從 ftp 子系統(tǒng)退出到外殼。 

9. 示例

不得不說這些自帶的命令真是很難用,有興趣的讀者可以安裝lftp進行相關操作

ftp> pwd
257 "/var/ftp/test"
ftp> dir /var/ftp/test
227 Entering Passive Mode (192,168,71,183,130,194).
150 Here comes the directory listing.
-rw-r--r--    1 0        0               0 Mar 08 17:41 1
-rw-r--r--    1 0        0               0 Mar 08 17:41 2
-rw-r--r--    1 0        0               0 Mar 08 17:41 3
226 Directory send OK.
ftp> get 1 /tmp/1
local: /tmp/1 remote: 1
227 Entering Passive Mode (192,168,71,183,110,5).
150 Opening BINARY mode data connection for 1 (0 bytes).
226 Transfer complete.
ftp> exit
221 Goodbye.
[root@zabbix-svr-2 conf.d]# ll /tmp/
total 0
-rw-r--r-- 1 root root  0 Mar  8 04:42 1

2 FTPS

FTPS是在安全套接層使用標準的FTP協(xié)議和指令的一種增強型FTP協(xié)議,為FTP協(xié)議和數(shù)據(jù)通道增加了SSL安全功能。FTPS也稱作“FTP-SSL”和“FTP-over-SSL”。SSL是一個在客戶機和具有SSL功能的服務器之間的安全連接中對數(shù)據(jù)進行加密和解密的協(xié)議。

2.1 兩種模式

1. FTPS 隱式 SSL

該模式通常在端口 990 上運行。在這個模式下全部數(shù)據(jù)的交換都需要在客戶端和服務器之間建立 SSL 會話,并且服務器會拒絕任何不使用 SSL 進行的連接嘗試。SSL/TLS協(xié)議在傳輸層(TCP/IP)之上、但是在應用層之下工作的。因此,它可以很容易在諸如HTTP,Telnet,POP3,IMAP4,SMTP和FTP等應用層協(xié)議上實現(xiàn)。

2. FTPS 顯式 SSL

顯示 SSL 下服務器可以同時支持 FTP 和 FTPS 會話。開始會話前客戶端需要先建立與 FTP 服務器的未加密連接,并在發(fā)送用戶憑證前先發(fā)送 AUTH TLS 或 AUTH SSL 命令來請求服務器將命令通道切換到 SSL 加密通道,成功建立通道后再將用戶憑證發(fā)送到 FTP 服務器,從而保證在會話期間的任何命令都可以通過 SSL 通道自動加密。

總結,當啟用隱式模式時,FTP 的默認端口就被改為 TCP/990,服務器自動建立安全連接,并且要求客戶端也必須支持安全連接模式也就是使用 SSL 進行連接。當啟用顯式模式時,與 FTP 連接方式和默認端口一樣,但是需要以命令 AUTH SSL/TLS 類型的命令進行激活安全連接后才能正常傳輸數(shù)據(jù)。

2.2 搭建FTPS服務器

FTPS又稱作“FTP-SSL”和“FTP-over-SSL”,所以我們在ftp服務器的示例基礎上,設置ssl和ca即可以完成FTPS服務器

1. 編輯openssl配置文件

先編輯一下openssl.cnf配置文件,修改[ policy_match ]模塊下加粗內容

[ policy_match ]
countryName = optional
stateOrProvinceName = optional
organizationName = optional
organizationalUnitName = optional
commonName = supplied
emailAddress = optional

保存文件并退出。

2. 生成相關文件

進入到與CA服務器有關的目錄,生成index.txt和serial文件,并且給serial文件賦初始值為“01”

[root@zabbix-svr-2 CA]# ls
certs  crl  newcerts  private
[root@zabbix-svr-2 CA]# touch index.txt
[root@zabbix-svr-2 CA]# touch serial
[root@zabbix-svr-2 CA]# echo '01'> serial

3. 搭建本地CA服務器

使用非對稱加密算法rsa,采用1024為算法,得到一個密鑰存放在private/cakey.pem中

    openssl genrsa 1024 > private/cakey.pem

私鑰不允許別人查看,所以將cakey.pem文件的權限改為600,只有所屬用戶可以讀寫

    chmod 600 private/cakey.pem

使用CA服務器自己的私鑰cakey.pem產(chǎn)生一個證書cacert.pem

[root@zabbix-svr-2 CA]# openssl genrsa 1024 > private/cakey.pem
Generating RSA private key, 1024 bit long modulus
..............++++++
..........................................................................................................................++++++
e is 65537 (0x10001)
[root@zabbix-svr-2 CA]# chmod 600 private/cakey.pem
[root@zabbix-svr-2 CA]# openssl req -new -key private/cakey.pem -x509 -out cacert.pem -days 3650
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [XX]:CN
State or Province Name (full name) []:LN
Locality Name (eg, city) [Default City]:SY
Organization Name (eg, company) [Default Company Ltd]:MX
Organizational Unit Name (eg, section) []:DB
Common Name (eg, your name or your server's hostname) []:192.168.70.183
Email Address []:

創(chuàng)建一個目錄,存放于vsftp有關的證書,證書請求,密鑰

[root@zabbix-svr-2 CA]# mkdir -pv /etc/vsftpd/certs
mkdir: created directory ‘/etc/vsftpd/certs’
[root@zabbix-svr-2 CA]# cd /etc/vsftpd/certs/

非對稱加密算法rsa,使用1024位,算出一個密鑰vsftp.key

[root@zabbix-svr-2 certs]# openssl genrsa 1024 >vsftpd.key	#利用私鑰vsftp.key產(chǎn)生一個證書請求文件vsftp.csr
Generating RSA private key, 1024 bit long modulus
........................++++++
.............++++++
e is 65537 (0x10001)
[root@zabbix-svr-2 certs]# openssl req -new -key vsftpd.key -out vsftpd.csr	#利用證書請求文件的到一個證書vsftp.cert
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [XX]:CN
State or Province Name (full name) []:LN
Locality Name (eg, city) [Default City]:SY
Organization Name (eg, company) [Default Company Ltd]:SW
Organizational Unit Name (eg, section) []:DBC
Common Name (eg, your name or your server's hostname) []:192.168.70.183
Email Address []:Please enter the following 'extra' attributes
to be sent with your certificate request
A challenge password []:123456
An optional company name []:swww

4. 給自己發(fā)證

[root@zabbix-svr-2 certs]# openssl ca -in vsftpd.csr -out vsftpd.cert
Using configuration from /etc/pki/tls/openssl.cnf
Check that the request matches the signature
Signature ok
Certificate Details:Serial Number: 1 (0x1)ValidityNot Before: Mar  9 05:43:09 2023 GMTNot After : Mar  8 05:43:09 2024 GMTSubject:countryName               = CNstateOrProvinceName       = LNorganizationName          = SWorganizationalUnitName    = DBCcommonName                = 192.168.70.183X509v3 extensions:X509v3 Basic Constraints:CA:FALSENetscape Comment:OpenSSL Generated CertificateX509v3 Subject Key Identifier:6F:C6:8E:51:B2:1D:29:B6:17:DD:FE:41:5E:F4:86:EE:31:40:27:AFX509v3 Authority Key Identifier:keyid:79:8F:83:04:33:A8:5C:37:E9:F7:A4:1C:2F:46:D1:15:6E:24:4E:86Certificate is to be certified until Mar  8 05:43:09 2024 GMT (365 days)
Sign the certificate? [y/n]:y1 out of 1 certificate requests certified, commit? [y/n]y
Write out database with 1 new entries
Data Base Updated

將該目錄下的文件權限全部改為600,即所屬用戶可讀寫

    chmod 600 *

5. 修改vsftpd配置文件/etc/vsftpd/vsftpd.conf

local_root=/var/ftp/test
chroot_local_user=YES
chroot_list_enable=YES
chroot_list_file=/etc/vsftpd/chroot_list
pasv_enable=YES
allow_writeable_chroot=YES
ssl_enable=YES
ssl_tlsv1_2=YES
ssl_sslv2=YES
ssl_sslv3=YES
rsa_cert_file=/etc/vsftpd/certs/vsftpd.cert
rsa_private_key_file=/etc/vsftpd/certs/vsftpd.key

6.重啟服務,進行測試

    systemctl restart vsftpd

OK就可以了

3 SFTP

sftp是Secure File Transfer Protocol的縮寫,安全文件傳送協(xié)議??梢詾閭鬏斘募峁┮环N安全的加密方法。sftp 與 ftp 有著幾乎一樣的語法和功能。SFTP 為 SSH的一個組件,是一種傳輸檔案至 Blogger 伺服器的安全方式。其實在SSH軟件包中,已經(jīng)包含了一個叫作SFTP(Secure File Transfer Protocol)的安全文件傳輸子系統(tǒng),SFTP本身沒有單獨的守護進程,它必須使用sshd守護進程(端口號默認是22)來完成相應的連接操作,所以從某種意義上來說,SFTP并不像一個服務器程序,而更像是一個客戶端程序。SFTP同樣是使用加密傳輸認證信息和傳輸?shù)臄?shù)據(jù),所以,使用SFTP是非常安全的。但是,由于這種傳輸方式使用了加密/解密技術,所以傳輸效率比普通的FTP要低得多,如果您對網(wǎng)絡安全性要求更高時,可以使用SFTP代替FTP。

3.1 SFTP數(shù)據(jù)傳輸過程

在進行SFTP數(shù)據(jù)傳輸前,首先需要建立SSH加密通道,如下圖所示。
在這里插入圖片描述

  1. SSH客戶端主動發(fā)起TCP請求,和SSH服務器建立TCP會話。

  2. SSH客戶端和SSH服務器協(xié)商認證方式。當前SSH有兩種認證方式:口令認證和秘鑰認證。

    • 2.1 如果使用口令認證,則SSH秘鑰協(xié)商過程是,SSH服務器主動發(fā)送公鑰給SSH客戶端。SSH客戶端收到公鑰后,使用公鑰對登陸密碼加密,并回送給SSH服務器。SSH服務器使用私鑰進行數(shù)據(jù)解密,并驗證SSH客戶端的信息合法性,如果驗證通過則建立連接,進行加密通信。
    • 2.2 如果使用秘鑰認證,則SSH秘鑰協(xié)商過程是,SSH客戶端主動發(fā)送客戶端公鑰給SSH服務器。SSH服務器收到信息后,檢查服務器的授權列表中是否包含SSH客戶端的公鑰。如果存在,則生成一個隨機數(shù),并使用SSH客戶端的公鑰加密,生成密文回送給SSH客戶端。SSH客戶單收到密文后,使用私鑰解密,并將隨機數(shù)發(fā)回SSH服務器。SSH服務器驗證隨機數(shù),如果一致,則認證通過,連接建立。
  3. SSH加密通道建立完成后,SFTP即可進行數(shù)據(jù)傳輸,上傳和下載文件。

3.2 搭建sftp

1. 關閉防火墻和selinux

為了避免不必要的麻煩,我們先關閉防火墻和selinux,等搭建成功之后再開啟防火墻和相應的端口

[root@centos7 ~]# systemctl status firewalld.service       # 查看防火墻狀態(tài)
[root@centos7 ~]# systemctl stop firewalld.service         # 停止防火墻服務
[root@centos7 ~]# systemctl disable firewalld.service      # 關閉防火墻開啟自啟動
# 把文件中的SELINUX=enforcing 改為SELINUX=disabled
[root@centos7 ~]# vim /etc/selinux/config          
[root@centos7 ~]# setenforce 0                             # 使修改馬上生效

2. 安裝SSH服務

在CentOS7中,sftp只是ssh的一部分,所以采用yum來安裝ssh服務即可
查看是否已經(jīng)安裝了ssh

[root@centos7 ~]# ssh -V
OpenSSH_7.4p1, OpenSSL 1.0.2k-fips  26 Jan 2017         # 代表已安裝
[root@centos7 ~]# rpm -qa|grep openssh*
openssh-clients-7.4p1-22.el7_9.x86_64
openssh-7.4p1-22.el7_9.x86_64
openssl-devel-1.0.2k-25.el7_9.x86_64
openssl-1.0.2k-25.el7_9.x86_64
xmlsec1-openssl-1.2.20-7.el7_4.x86_64
openssl-libs-1.0.2k-25.el7_9.x86_64
openssh-server-7.4p1-22.el7_9.x86_64                   	# 代表已安裝
[root@centos7 ~]# yum install -y openssl* openssh* 		# 如果已經(jīng)安裝,再次執(zhí)行yum就會把軟件包升級到最新版本

如果未安裝,安裝ssh

yum install -y openssl openssh-server

設置為開機自動啟動服務

[root@centos7 ~]# systemctl enable sshd.service
[root@centos7 ~]# systemctl start  sshd.service      # 啟動服務systemctl stop  sshd.service        # 停止服務
systemctl restart sshd.service      # 重啟服務
systemctl status sshd.service       # 查看服務狀態(tài)
systemctl enable sshd.service       # 設置開機自啟動sshd服務
systemctl disable sshd.service      # 禁用開機自啟動sshd服務

3. 新建用戶和SFTP目錄

sftpuser是你為該sftp服務創(chuàng)建的用戶名,/data/sftp/sftpuser為sftp服務器訪問路徑

新建SFTP目錄并授權

mkdir -p /data/sftp/sftpuser
chown root:root /data/sftp/sftpuser
chmod 755 /data/sftp/sftpuser

新建sftp組及用戶

# 新建用戶組sftp
groupadd sftp
# 新建用戶sftpuser,并且設置不支持ssh系統(tǒng)登錄,只能登錄sftp服務器
# -g 用戶組; -d 指定家目錄; -s 不能登陸系統(tǒng); -M 不創(chuàng)建家目錄
useradd -g sftp -d /data/sftp/sftpuser -M -s /sbin/nologin sftpuser
# 設置密碼
# echo "新密碼" | passwd --stdin 用戶名
echo "sftppassword" | passwd --stdin sftpuser

新建SFTP用戶可寫目錄

# 由于/data/sftp/sftpuser的用戶是root,其它用戶都沒有寫的權限
# 所以要在該目錄下新建一個目錄用于文件的上傳下載
mkdir -p /data/sftp/sftpuser/upload
chown sftpuser:sftp /data/sftp/sftpuser/upload
chmod 755 /data/sftp/sftpuser/upload

4. 配置SSH和SFTP服務器

# 防止后期配置文件出錯后無法還原,備份配置文件
[root@centos7 ~]# cp /etc/ssh/sshd_config /etc/ssh/sshd_config.backup
[root@centos7 ~]# cd /etc/ssh/
[root@centos7 ssh]# ll
......
-rw-------  1 root root       4084 811 22:55 sshd_config
-rw-------  1 root root       4084 815 10:22 sshd_config.back
......

配置SSH

vim /etc/ssh/sshd_config# 修改下面的內容,沒有的內容直接新增即可
# 下面這幾項的默認值也是它們,所以這一步可以跳過
PermitRootLogin yes
RSAAuthentication yes
PubkeyAuthentication yes
AuthorizedKeysFile    .ssh/authorized_keys

配置SFTP

vim /etc/ssh/sshd_config# 注釋掉這行
# Subsystem      sftp    /usr/libexec/openssh/sftp-server# 文件末尾添加以下內容
Subsystem sftp internal-sftp
Match Group sftp
ChrootDirectory /data/sftp/%u
ForceCommand internal-sftp
# 下面兩項是與安全有關
AllowTcpForwarding no
X11Forwarding no

5. 重啟并配置防火墻

systemctl enable firewalld.service                   # 重啟防火墻開機自啟動
systemctl restart firewalld.service                  # 重啟防火墻服務
firewall-cmd --version                               # 查看防火墻版本
firewall-cmd --list-all                                # 查看已開放的端口
firewall-cmd --permanent --zone=public --add-port=22/tcp    # 開通sftp服務22默認端口
firewall-cmd --reload                                       # 刷新防火墻,重新載入
# 關閉Selinux策略
setsebool -P ftpd_full_access on
sed -i s#enforcing#disabled#g /etc/sysconfig/selinux
setenforce 0 && getenforce
getenforce

重啟SFTP服務

systemctl restart sshd.service

至此,SFTP其實就已經(jīng)搭建成功,可以登錄了!

6. 訪問測試

查看IP地址,創(chuàng)建測試文件

ip a
# 進入之前設置好的路徑
[root@centos7 ~]# cd /data/sftp/sftpuser/upload
# 新建測試文件,然后保存退出
[root@centos7 upload]# vim 測試_20220712.txt
[root@centos7 upload]#

終端訪問測試
sftp命令

[root@centos7 upload]# sftp sftpuser:sftppassword@192.168.10.110
sftpuser:sftppassword@192.168.10.110's password:   # 密碼輸入不顯示,正常輸入后直接按回車就行
Connected to 192.168.10.110.
sftp> pwd
Remote working directory: /
sftp> cd upload/
sftp> pwd
Remote working directory: /upload
sftp> lls
測試_20220712.txt
sftp> exit

7. SFTP常用命令

ls  查看當前目錄下文件
help 查看sftp支持哪些命令
cd 指定目錄
pwd 查看當前目錄
get xxx.txt 下載xxx文件
put xxx.txt 上傳xxx文件
quit / bye / exit 退出sftp
sftp  xxx.xxx.xxx.xxx   登錄root用戶
sftp zygf@xxx.xxx.xxx.xxx  進行登錄zygf用戶

4 SFTP 和FTPS的區(qū)別

SFTP 和FTPS都是提供安全的鏈接,協(xié)議非常相似。

FTPS借助ssl協(xié)議加密,SFTP借助ssh加密。
ssl是為http/smtp等加密設計的,SSL證書是HTTP明文協(xié)議升級HTTPS加密協(xié)議的重要渠道,是網(wǎng)絡安全傳輸?shù)募用艿酵ǖ馈sh是為telnet/ftp等加密、建立傳輸通道而設計的。
其實ssh建立傳輸通道就是為了加密和傳輸,而且這個通道是可以用來遠程登錄。如果只說它們的功能,通俗的講,ssh就像鋪管子,ssl就像打包裹,鋪管子和打包裹都會使數(shù)據(jù)安全,都是一個制作密鑰的過程,而因為ssh是一個管子所以它很適合ftp的安全傳輸。
簡單的講:sftp協(xié)議是ssh中的一條獨立的協(xié)議,利用sftp服務器就可以傳輸數(shù)據(jù)。而ftps是ftp-over-ssl的意思,即ftp借助ssl協(xié)議加密傳輸,不但要用ftp服務器還要用ssl協(xié)議加密。(如果是ftp-over-ssh,就是完全不同于sftp的傳輸方式了,就是利用ftp服務器和ssh協(xié)議加密傳輸數(shù)據(jù)。 )
這兩種協(xié)議是不同的。sftp是ssh內含的協(xié)議,僅僅要sshd server啟動了,它就可用,它本身不須要ftp server啟動。ftps則象一個二傳手。

5 常見連接錯誤

  • Connect 連接被拒絕: 可能原因是vsftpd服務沒被啟動

  • 530 Permission denied: 可能原因是userlist_enable=YES并且/etc/vsftpd/user_list中包含要登錄的ftp用戶名 即user_list禁止了該用戶的登錄、或者可能是沒有指定userlist_file=/etc/vsftpd/user_list

  • 530 Login incorrect: 可能原因是登錄的ftp用戶名被包含在禁止登錄列表/etc/vsftpdftpusers中 | 同時要確保用戶名、密碼是正確的 | 也可能是配置文件中少了一行pam_service_name=vsftpd | 檢查/etc/pam.d/vsftpd 文件里面lib的路徑 | 編輯/etc/pam.d/vsftp文件,注釋掉auth required pam_shells.so(這個語句的意思是只有包含shell的用戶才能登錄)

  • 530 Non-anonymous sessions must use encryption.:服務器的強制,非匿名用戶必須使用加密連接

  • 500 OOPS: cannot open user list file:可能原因是不存在文件“/etc/vsftpd/user_list”或文件中不存在該帳戶,解決:解決: cho username >> /etc/vsftpd/user_list

  • 500 OOPS: cannot open chroot() user list file | 500 OOPS: could not read chroot() list file:/etc/vsftpd/chroot_list:可能原因是不存在文件“/etc/vsftpd/chroot_list”

  • 500 OOPS: missing value in config file: 可能原因是配置文件“=”等號前值有問題,或只有一個空格

  • 500 OOPS: bad bool value in config file: 可能原因是配置文件=”等號后值有問題

  • 500 OOPS: unrecognised variable in config file: 可能原因是參數(shù)前有空格

  • 500 OOPS: chdir, 500 OOPS: child died, 500 OOPS: chroot:可能原因是用戶主目錄沒有權限或沒有主目錄,或者還是selinux影響的

  • 500 OOPS: vsftpd: both local and anonymous access disabled!匿名用戶和本地用戶登錄都被禁用

  • GnuTLS error -12: A TLS fatal alert has been received.:received.:Filezilla最新版本認為vsftpd默認的加密算法”DES-CBC3-SHA”不夠安全而拒絕連接導致的。有兩種辦法解決該問題,一是降級你的Filezilla客戶端版本到3.5.3以下,二是更改服務器端vsftpd的配置,增加參數(shù):ssl_ciphers=HIGH

  • ECONNREFUSED – Connection refused by server: 當啟用隱式ssl連接,用filezilla、winscp客戶端連接時報錯,因為vsftpd此時服務器端的端口還是21,但是客戶端確以990來連接。修改客戶端連接時使用的參數(shù)或者服務器的通過參數(shù)listen_port設置端口為990,問題解決

?

http://m.risenshineclean.com/news/61331.html

相關文章:

  • 網(wǎng)站的關于頁面寧波seo關鍵詞
  • 免費試用網(wǎng)站空間成都十大營銷策劃公司
  • 最全的數(shù)據(jù)網(wǎng)站寧波seo費用
  • 鄭州發(fā)布seo具體是什么
  • 網(wǎng)絡有限公司做女裝網(wǎng)站的百度一下百度搜索百度
  • 做h的游戲 迅雷下載網(wǎng)站線上推廣100種方式
  • 衡水網(wǎng)頁網(wǎng)站建設企業(yè)網(wǎng)絡營銷策劃
  • 寧陵做網(wǎng)站雅虎搜索引擎中文版
  • 想學網(wǎng)站制作網(wǎng)絡軟件開發(fā)
  • php網(wǎng)站開發(fā)需要學什么怎么宣傳自己新開的店鋪
  • 網(wǎng)站開發(fā)績效考核站長工具友鏈檢測
  • 泰安的網(wǎng)站建設公司哪家好正規(guī)推廣平臺
  • 購物網(wǎng)站開發(fā)的需求分析常見的網(wǎng)站推廣方式
  • 做網(wǎng)站建設公司crm在線的提升服務外貿(mào)網(wǎng)站推廣服務
  • 上海建設電動車網(wǎng)絡營銷鄭州優(yōu)化推廣公司
  • 課程網(wǎng)站建設 碧輝騰樂谷歌seo
  • 網(wǎng)絡營銷策劃是什么意思seo排名優(yōu)化方法
  • 蘇州怎么制作網(wǎng)頁網(wǎng)站杭州網(wǎng)站seo價格
  • 廣東哪里網(wǎng)站建設安卓優(yōu)化神器
  • seopc流量排名官網(wǎng)超級seo外鏈
  • 免費個人crmapp網(wǎng)站優(yōu)化排名易下拉穩(wěn)定
  • 外貿(mào)狼成都seo的方法
  • 做線下活動的網(wǎng)站武漢seo網(wǎng)絡優(yōu)化公司
  • 云南酒店網(wǎng)站建設名優(yōu)網(wǎng)站關鍵詞優(yōu)化
  • 小游戲網(wǎng)址鏈接seo網(wǎng)站推廣優(yōu)化論文
  • java做直播網(wǎng)站有哪些軟件有哪些微信加人推碼35一單
  • 商務網(wǎng)站建設管理思路青島seo經(jīng)理
  • 做的網(wǎng)站怎么發(fā)布到網(wǎng)上網(wǎng)絡推廣方案怎么寫
  • 模仿網(wǎng)站怎么防止侵權電商關鍵詞一般用哪些工具
  • icp備案網(wǎng)站要先建好嗎微信社群營銷