xshell使用xftp傳輸文件、使用pure-ftpd搭建ftp服務

xshell使用xftp傳輸文件

安裝xftp:html

在xshell中按Ctrl + Alt + F會提示是否安裝xftpmysql

安裝完成後,在Xshell中按Ctrl + Alt + F 會自動打開窗口,可是不一樣的是會自動鏈接當前Xshell窗口中的遠程機器:linux

Xftp走的是ssh協議,即使把vsftpd服務停掉也可以進行鏈接。sql

如今咱們就能夠經過這個工具,上傳和下載文件了,從Linux中下載文件到Windows雙擊須要下載的文件或者拖動要下載的文件到左邊的Windows窗口中,就會下載到Windows的桌面上:shell

能夠選擇下載的路徑:數據庫

從Windows上傳文件到Linux,右鍵點擊須要上傳的文件,而後點擊傳輸便可vim

 使用pure-ftpd搭建ftp服務

pure-ftpd爲另一款比較小巧實用的FTP軟件windows

安裝pure-ftpd:

默認的CentOS源並不包含pure-ftpd,須要安裝epel擴展源:安全

•  yum install -y epel-release服務器

• yum install -y pure-ftpd

配置pure-ftpd

在啓動pure-ftpd以前,須要先修改配置文件/etc/pure-ftpd/pure-ftpd.conf。須要把PureDB /etc/pure-ftpd/pureftpd.pdb前面的#刪除,而後啓動pure-ftpd,啓動以前須要關閉vsftpd,由於端口有衝突。

vim /etc/pure-ftpd/pure-ftpd.conf

找到pureftpd.pdb這行,把行首的#刪除

systemctl stop vsftpd

systemctl start pure-ftpd

創建帳號:

爲了安全,pure-ftpd使用的帳號並不是linux的系統帳戶,而是虛擬帳號,首先建立一個帳號。

mkdir /data/ftp

useradd -u 1010 pure-ftp

chown -R pure-ftp:pure-ftp /data/ftp

pure-pw useradd ftp_user1 -u pure-ftp  -d /data/ftp

其中,-u選項將虛擬用戶ftp_user1與系統用戶pure-ftp關聯在一塊兒,也就是說,使用ftp_user1帳號登陸FTP後,會以pure-ftp的身份來讀取和下載文件,-d選項後面的目錄爲ftp_user1帳戶的家目錄,這樣可使ftp_user1只能訪問其家目錄/data/ftp/

建立用戶信息數據庫文件,這一步是關鍵

pure-pw mkdb

其中,pure-pw還能夠列出當前的FTP帳號以及刪除某個帳號。例如,咱們在建立一個帳號:

mkdir /data/ftp1

chown -R pure-ftp:pure-ftp /data/ftp1

pure-pw useradd ftp_user2 -u pure-ftp -d /data/ftp1

pure-pw mkdb

列出當前分帳號,執行以下命令:

pure-pw list

若是想刪除帳號,執行下面命令:

pure-pw userdel ftp-user2

pure-pw usermod

更改用戶權限

pure-pw passwd

更改用戶密碼

測試pure-ftpd

lftp ftp_user1@127.0.0.1

ls

put /etc/fstab

ls

lftp ftp_user2@127.0.0.1

ls

put /etc/passwd

ls

登陸後使用ls命令查看當前目錄都有什麼文件,使用put命令能夠把系統上的文件上傳到ftp服務器上。還能夠在windows機器裏安裝ftp客戶端FileZilla遠程鏈接測試

vsftp使用mysql驗證虛擬用戶:

1  安裝vsftpd

(1) yum install -y  vsftpd

(2)編輯vsftpd.conf

內容以下

listen=YES

connect_from_port_20=YES

pasv_enable=YES

tcp_wrappers=YES

local_enable=YES

chroot_local_user=yes

anonymous_enable=NO

guest_enable=YES

guest_username=vsftpdguest

user_config_dir=/etc/vsftpd/vsftpd_user_conf

pam_service_name=/etc/pam.d/vsftpd

dirmessage_enable=YES

idle_session_timeout=600

check_shell=NO

(3)建立一個虛擬用戶映射系統用戶    

useradd –s /sbin/nologin vsftpdguest

2 安裝 mysql

具體步驟參考 http://www.lishiming.net/thread-7-1-2.html

3 安裝 pam-mysql

wget  https://nchc.dl.sourceforge.net/project/pam-mysql/pam-mysql/0.7RC1/pam_mysql-0.7RC1.tar.gz

tar zxvf  pam_mysql-0.7RC1.tar.gz

cd pam_mysql-0.7RC1

./configure --with-mysql=/usr/local/mysql --with-pam=/usr --with-pam-mods-dir=/usr/lib

make && make install

4 建立vsftp 庫和相關的表並受權

>create database vsftp;

>use vsftp ;

>create table users ( name char(16) binary ,passwd char(125) binary ) ;

>insert into users (name,passwd) values ('test001',password('123456'));

>insert into users (name,passwd) values ('test002',password('234567'));

>grant select on vsftp.users to vsftpdguest@localhost identified by 'vsftpdguest';

5 建立虛擬帳戶的配置文件

mkdir /etc/vsftpd/vsftpd_user_conf 

cd  /etc/vsftpd/vsftpd_user_conf

vim test001

內容以下

local_root=/ftp/        

write_enable=YES

virtual_use_local_privs=YES

chmod_enable=YES

6  編輯驗證文件

vim  /etc/pam.d/vsftpd

內容以下

#%PAM-1.0

auth required /usr/lib/pam_mysql.so user=vsftpdguest passwd=vsftpdguest host=localhost db=vsftp table=users usercolumn=name passwdcolumn=passwd crypt=2

account required /usr/lib/pam_mysql.so user=vsftpdguest passwd=vsftpdguest host=localhost db=vsftp table=users usercolumn=name passwdcolumn=passwd crypt=2

若是不想使用mysql也可使用文件的形式來搞虛擬帳號,請參考  Centos5.5 配置vsftpd 虛擬帳號

ftp主動和被動模式:

FTP協議有兩種工做方式:PORT方式和PASV方式,中文意思爲主動模式和被動模式
1、什麼是主動FTP  

        主動模式的FTP工做原理:客戶端從一個任意的非特權端口N鏈接到FTP服務器的命令端口,也就是21端口。而後客戶端開始監聽端口N+1,併發送FTP命令「port N+1」到FTP服務器。接着服務器會從它本身的數據端口(20)鏈接到客戶端指定的數據端口(N+1)。

    針對FTP服務器前面的防火牆來講,必須容許如下通信才能支持主動方式FTP:    

    一、 任何大於1024的端口到FTP服務器的21端口。(客戶端初始化的鏈接)  

    二、 FTP服務器的21端口到大於1024的端口。 (服務器響應客戶端的控制端口) 

    三、 FTP服務器的20端口到大於1024的端口。(服務器端初始化數據鏈接到客戶端的數據端口)

    四、 大於1024端口到FTP服務器的20端口(客戶端發送ACK響應到服務器的數據端口) 

2、什麼是被動FTP  

    爲了解決服務器發起到客戶的鏈接的問題,人們開發了一種不一樣的FTP鏈接方式。這就是所謂的被動方式,或者叫作PASV,當客戶端通知服務器它處於被動模式時才啓用。

   在被動方式FTP中,命令鏈接和數據鏈接都由客戶端發起,這樣就能夠解決從服務器到客戶端的數據端口的入方向鏈接被防火牆過濾掉的問題。

   當開啓一個 FTP鏈接時,客戶端打開兩個任意的非特權本地端口(N > 1024和N+1)。第一個端口鏈接服務器的21端口,但與主動方式的FTP不一樣,客戶端不會提交PORT命令並容許服務器來回連它的數據端口,而是提交 PASV命令。這樣作的結果是服務器會開啓一個任意的非特權端口(P > 1024),併發送PORT P命令給客戶端。而後客戶端發起從本地端口N+1到服務器的端口P的鏈接用來傳送數據。  

       對於服務器端的防火牆來講,必須容許下面的通信才能支持被動方式的FTP:     

    一、 從任何大於1024的端口到服務器的21端口(客戶端初始化的鏈接)  

    二、 服務器的21端口到任何大於1024的端口(服務器響應到客戶端的控制端口的鏈接) 

    三、 從任何大於1024端口到服務器的大於1024端口(客戶端初始化數據鏈接到服務器指定的任意端口)

    四、 服務器的大於1024端口到遠程的大於1024的端口(服務器發送ACK響應和數據到客戶端的數據端口)

從上面能夠看出,兩種方式的命令鏈路鏈接方法是同樣的,而數據鏈路的創建方法就徹底不一樣,以下圖:
FTP服務器的主動工做模式

port.jpg


FTP服務器的被動工做模式

pasv.jpg



以上關於主動和被動FTP的解釋,能夠簡單歸納爲如下兩點:

    一、主動FTP:  

            命令鏈接:客戶端 >1024端口 -> 服務器 21端口  

            數據鏈接:客戶端 >1024端口 <- 服務器 20端口 

    二、被動FTP: 

            命令鏈接:客戶端 >1024端口 -> 服務器 21端口 

            數據鏈接:客戶端 >1024端口 -> 服務器 >1024端口

3、主動模式ftp與被動模式FTP優勢和缺點:       

   主動FTP對FTP服務器的管理和安全頗有利,但對客戶端的管理不利。由於FTP服務器企圖與客戶端的高位隨機端口創建鏈接,而這個端口頗有可能被客戶端的防火牆阻塞掉。被動FTP對FTP客戶端的管理有利,但對服務器端的管理不利。由於客戶端要與服務器端創建兩個鏈接,其中一個連到一個高位隨機端口,而這個端口頗有可能被服務器端的防火牆阻塞掉。

pasv.jpg

相關文章
相關標籤/搜索