FTP服務(wù)搭建與配置--使用vsftpd搭建FTP服務(wù)

一 FTP介紹

使用場(chǎng)景:前面介紹的lrzsz工具當(dāng)文件大了超過(guò)4G后就不好使用了,而FTP就適合于傳輸大文件;另外一種情況是在阿里云上,從一臺(tái)機(jī)器跳到另一臺(tái)機(jī)器,需要用到跳板機(jī),這時(shí)候如果用rzsz去傳輸數(shù)據(jù)也會(huì)出問(wèn)題,而我們可以在Linux系統(tǒng)上搭建一個(gè)FTP服務(wù)環(huán)境,然后客戶(hù)端比如windows可以安裝一個(gè)客戶(hù)端軟件,就可以連到服務(wù)端,把本地的文件傳到服務(wù)器上去,也可以把服務(wù)器的文件下載到本地來(lái)

? ? 由于安全性和規(guī)范性問(wèn)題,F(xiàn)TP在小公司使用的多,大企業(yè)使用的較少,大企業(yè)如果有發(fā)布更新到服務(wù)器的需求,一般使用自動(dòng)化發(fā)布的工具

二 搭建ftp服務(wù)

1、安裝

? ? centos自帶ftp服務(wù)軟件包vsftpd,可以直接使用yum安裝

? ? # yum install -y vsftpd

2、創(chuàng)建linux系統(tǒng)的普通用戶(hù)

? ? vsftpd這個(gè)軟件是可以使用系統(tǒng)級(jí)別的用戶(hù)來(lái)登錄的,比如我創(chuàng)建一個(gè)系統(tǒng)的普通用戶(hù)lijie,設(shè)置了一個(gè)密碼,我們是可以用lijie這個(gè)用戶(hù)和它的密碼來(lái)登錄vsftpd,只不過(guò)這個(gè)登錄不是ssh方式,而是ftp的方式,登錄進(jìn)去后會(huì)進(jìn)入到lijie這個(gè)用戶(hù)的家目錄下,但是這樣是有點(diǎn)不安全的,畢竟給這個(gè)用戶(hù)設(shè)置了密碼,它就能夠去登錄操作系統(tǒng),這時(shí)候,我們可以采取給ftp設(shè)置虛擬用戶(hù)的方式解決這個(gè)問(wèn)題,虛擬用戶(hù)映射成系統(tǒng)的一個(gè)普通用戶(hù),或者也可以映射多個(gè)普通用戶(hù),這樣的話(huà)就算是有了密碼,也是不能夠通過(guò)ssh去登錄這臺(tái)服務(wù)器的,這樣相對(duì)來(lái)說(shuō)安全了很多

? ? 我們首先來(lái)創(chuàng)建一個(gè)虛擬用戶(hù),這個(gè)虛擬用戶(hù)是用來(lái)映射的

? ? # useradd -s /sbin/nologin virftpuser ? ?

? ? 其中-s用來(lái)指定用戶(hù)的shell , ??/sbin/nologin表示不能登錄系統(tǒng),virftpuser是創(chuàng)建的用戶(hù)的用戶(hù)名,

3、編輯虛擬用戶(hù)密碼文件

? ? # vim /etc/vsftpd/vsftpd_login ? ?//我們需要在這個(gè)文件里定義用戶(hù)名和密碼,格式是奇數(shù)行為用戶(hù)名,偶數(shù)行為密碼,添加的內(nèi)容如下

4、修改虛擬用戶(hù)密碼文件的權(quán)限

? ? # chmod 600 /etc/vsftpd/vsftpd_login ? ? ?//為了安全,密碼文件只允許屬主讀寫(xiě)

5、將虛擬用戶(hù)密碼文件轉(zhuǎn)換為二進(jìn)制文件

? ? # ?db_load -T -t hash -f /etc/vsftpd/vsftpd_login /etc/vsftpd/vsftpd_login.db? ? ? ? ? //將文本文件轉(zhuǎn)換成計(jì)算機(jī)識(shí)別的二進(jìn)制文件

? ? # ll /etc/vsftpd ? ? ? //查看二進(jìn)制文件是否生成成功

? ? 上圖箭頭所指的這個(gè)二進(jìn)制文件是不能直接cat的,上面我們創(chuàng)建的密碼文件/etc/vsftpd/vsftpd_login實(shí)際上是可以自定義的,后面我們會(huì)在另外一個(gè)配置文件中去引用

6、創(chuàng)建虛擬用戶(hù)配置文件所在目錄

? ? 這個(gè)目錄也是可以自定義的,后面也會(huì)在另一個(gè)配置文件中引用

? ? # mkdir /etc/vsftpd/vsftpd_user_conf

7、創(chuàng)建第一個(gè)虛擬用戶(hù)的配置文件

? ? # cd /etc/vsftpd/vsftpd_user_conf? ? ? ?//切換到虛擬用戶(hù)配置文件目錄

? ? # vim testuser1? ? ? ? //創(chuàng)建第一個(gè)虛擬用戶(hù)的配置文件,這個(gè)文件的名字要求跟對(duì)應(yīng)的用戶(hù)名字保持一致

? ? 在這個(gè)配置文件中加入以下內(nèi)容:

local_root=/home/virftpuser/testuser1? ? ? ?//用于定義虛擬用戶(hù)的家目錄

anonymous_enable=NO? ? ? ? ? ? ? ? ? ? //將是否允許匿名用戶(hù)設(shè)置為不允許

write_enable=YES? ? ? ? ? ? ? ? ? ? ? ? ? ? ?//將是否允許可寫(xiě)設(shè)置為允許

local_umask=022? ? ? ? ? ? ? ? ? ? ? ? ? ? ? //用于定義創(chuàng)建新文件或新目錄時(shí)的權(quán)限

anon_upload_enable=NO? ? ? ? ? ? ? ? ?//是否允許匿名用戶(hù)上傳

anon_mkdir_write_enable=NO? ? ? ? ?//是否允許匿名用戶(hù)創(chuàng)建目錄、可寫(xiě):不允許

idle_session_timeout=600? ? ? ? ? ? ? ?//設(shè)置登陸ftp后空閑時(shí)ftp的會(huì)話(huà)超時(shí)時(shí)間為600s

data_connection_timeout=120? ? ? ? ?//數(shù)據(jù)傳輸?shù)某瑫r(shí)時(shí)間為120s

max_clients=10? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?//最大客戶(hù)端數(shù)

8、創(chuàng)建虛擬用戶(hù)家目錄

? ? # mkdir /home/virftpuser/testuser1? ? ? ??

9、在虛擬用戶(hù)家目錄下創(chuàng)建一個(gè)文件

? ? 這個(gè)文件用于我們后面的測(cè)試

? ? #? touch /home/virftpuser/testuser1/lijie.txt

10、修改所有者所屬組

? ? # chown -R virftpuser:virftpuser /home/virftpuser

11、修改ftp認(rèn)證的文件

? ??/etc/pam.d/vsftpd是用于認(rèn)證的文件,我們?cè)诘顷慺tp時(shí)候有一個(gè)認(rèn)證的過(guò)程,在認(rèn)證的時(shí)候,就需要告訴ftp我們是通過(guò)什么樣的形式去認(rèn)證,認(rèn)證的時(shí)候去哪里找密碼庫(kù),輸入的用戶(hù)名密碼是否正確需要找到這個(gè)庫(kù)來(lái)比對(duì)。

? ? 在/etc/pam.d/vsftpd這個(gè)文件中加入以下內(nèi)容,這個(gè)修改用于告訴ftp我們自定義的文件的目錄位置:

auth sufficient /lib64/security/pam_userdb.so db=/etc/vsftpd/vsftpd_login?

account sufficient /lib64/security/pam_userdb.so db=/etc/vsftpd/vsftpd_login

上面加入的內(nèi)容中 /lib64/security/pam_userdb.so? ? 這個(gè)文件是要求必須要存在的

12、編輯vsftp的主配置文件

? ? vsftp的主配置文件/etc/vsftpd/vsftpd.conf是vsftp最大最重要的配置文件,我們需要在這個(gè)配置文件中做一些修改:

? ? 修改前:

? ? 修改后:

? ? 修改了這三處之后還需要在這個(gè)配置文件的末尾加上以下內(nèi)容:

chroot_local_user=YES

guest_enable=YES? ? ? ?//允許映射

guest_username=virftpuser ? ? ? //告訴vsftpd虛擬用戶(hù)映射過(guò)來(lái)的用戶(hù)名

virtual_use_local_privs=YES? ? ? ?//告訴vsftpd服務(wù)我們現(xiàn)在使用的是虛擬用戶(hù)

user_config_dir=/etc/vsftpd/vsftpd_user_conf? ? //用于定義虛擬用戶(hù)配置文件所在路徑

allow_writeable_chroot=YES

13、啟動(dòng)vsftpd服務(wù)

????# systemctl start vsftpd? ? ? ? //啟動(dòng)vsftpd服務(wù)

? ? # ps aux |grep vsftp? ? ? ? ? ? //查看vsftpd服務(wù)是否成功啟動(dòng)

? ? # netstat -lntp? ? ? ? ? ? ? ? ? ? ?//查看vsftpd服務(wù)監(jiān)聽(tīng)的端口,監(jiān)聽(tīng)的是21端口


小知識(shí):22端口是sshd,23端口是telnet監(jiān)聽(tīng),telnet現(xiàn)在幾乎沒(méi)人用了

13、測(cè)試驗(yàn)證

? ? 首先我們可以在windows上安裝一個(gè)ftp客戶(hù)端軟件,建議使用filezilla client,filezilla是一個(gè)ftp開(kāi)源的免費(fèi)的軟件,可以搭建服務(wù),同時(shí)他也有一個(gè)客戶(hù)端軟件,為了測(cè)試方便,我們可以在linux上安裝一個(gè)ftp客戶(hù)端軟件lftp

? ? # yum install -y lftp? ? //安裝filezilla在linux上的客戶(hù)端軟件lftp

? ? # lftp testuser1@127.0.0.1? ? ?//使用testuser1用戶(hù)登錄

? ? 系統(tǒng)提示口令,即輸入密碼的意思,輸入密碼回車(chē)后,即可登陸到127.0.0.1,使用ls命令就可以看到之前我們創(chuàng)建的文件lijie.txt

? ? 我們輸入?后可以看到在ftp下我們可以使用的命令有哪些

? ? 我們常用的命令有:put、get

/> get lijie.txt ? ? ? ? ? //獲取文件lijie.txt放到當(dāng)前目錄下

/> quit ? ? ? ? ? ? ? ? ? ? //退出lftp

# ls ? ? ? ? ? ? ? ? ? ? ? ? ?//在當(dāng)前目錄下查看是否存在lijie.txt文件,可以看到,lijie.txt文件確實(shí)已經(jīng)獲取到了

三 ?使用xshell來(lái)實(shí)現(xiàn)ftp類(lèi)似功能

1、新建會(huì)話(huà)

? ? 在xshell中新建會(huì)話(huà),協(xié)議類(lèi)型選擇SFTP,端口號(hào)依然選擇22號(hào)端口,使用的是ssh協(xié)議

2、連接遠(yuǎn)程服務(wù)器

? ? 連接剛才新建的會(huì)話(huà)指定的服務(wù)器

? ? 輸入用戶(hù)名和密碼后登陸成功,登陸成功界面如下,這時(shí)候默認(rèn)是在root用戶(hù)下

? ? 我們來(lái)使用ls命令查看

? ? sftp:/root> ls

? ? sftp:/root> cd /tmp ? ? ? ? ? ? ? //我們可以切換到其他目錄下

? ? sftp:/tmp> get user.sql ? ? ? //從服務(wù)器獲取文件

? ? 上面命令已成功獲取文件到我們的windows中,具體的文件保存位置我們可以像下面這樣設(shè)置,點(diǎn)擊文件下面的屬性按鈕

? ? 彈出下面的對(duì)話(huà)框,我們按照?qǐng)D中步驟選擇本地存儲(chǔ)路徑

? ? 下面我們?cè)賮?lái)使用get命令傳輸文件就會(huì)保存到上圖我們?cè)O(shè)置的路徑里面去了


最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容