FTP服務搭建與配置--使用vsftpd搭建FTP服務

一 FTP介紹

使用場景:前面介紹的lrzsz工具當文件大了超過4G后就不好使用了,而FTP就適合于傳輸大文件;另外一種情況是在阿里云上,從一臺機器跳到另一臺機器,需要用到跳板機,這時候如果用rzsz去傳輸數據也會出問題,而我們可以在Linux系統上搭建一個FTP服務環境,然后客戶端比如windows可以安裝一個客戶端軟件,就可以連到服務端,把本地的文件傳到服務器上去,也可以把服務器的文件下載到本地來

? ? 由于安全性和規范性問題,FTP在小公司使用的多,大企業使用的較少,大企業如果有發布更新到服務器的需求,一般使用自動化發布的工具

二 搭建ftp服務

1、安裝

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

? ? # yum install -y vsftpd

2、創建linux系統的普通用戶

? ? vsftpd這個軟件是可以使用系統級別的用戶來登錄的,比如我創建一個系統的普通用戶lijie,設置了一個密碼,我們是可以用lijie這個用戶和它的密碼來登錄vsftpd,只不過這個登錄不是ssh方式,而是ftp的方式,登錄進去后會進入到lijie這個用戶的家目錄下,但是這樣是有點不安全的,畢竟給這個用戶設置了密碼,它就能夠去登錄操作系統,這時候,我們可以采取給ftp設置虛擬用戶的方式解決這個問題,虛擬用戶映射成系統的一個普通用戶,或者也可以映射多個普通用戶,這樣的話就算是有了密碼,也是不能夠通過ssh去登錄這臺服務器的,這樣相對來說安全了很多

? ? 我們首先來創建一個虛擬用戶,這個虛擬用戶是用來映射的

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

? ? 其中-s用來指定用戶的shell , ??/sbin/nologin表示不能登錄系統,virftpuser是創建的用戶的用戶名,

3、編輯虛擬用戶密碼文件

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

4、修改虛擬用戶密碼文件的權限

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

5、將虛擬用戶密碼文件轉換為二進制文件

? ? # ?db_load -T -t hash -f /etc/vsftpd/vsftpd_login /etc/vsftpd/vsftpd_login.db? ? ? ? ? //將文本文件轉換成計算機識別的二進制文件

? ? # ll /etc/vsftpd ? ? ? //查看二進制文件是否生成成功

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

6、創建虛擬用戶配置文件所在目錄

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

? ? # mkdir /etc/vsftpd/vsftpd_user_conf

7、創建第一個虛擬用戶的配置文件

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

? ? # vim testuser1? ? ? ? //創建第一個虛擬用戶的配置文件,這個文件的名字要求跟對應的用戶名字保持一致

? ? 在這個配置文件中加入以下內容:

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

anonymous_enable=NO? ? ? ? ? ? ? ? ? ? //將是否允許匿名用戶設置為不允許

write_enable=YES? ? ? ? ? ? ? ? ? ? ? ? ? ? ?//將是否允許可寫設置為允許

local_umask=022? ? ? ? ? ? ? ? ? ? ? ? ? ? ? //用于定義創建新文件或新目錄時的權限

anon_upload_enable=NO? ? ? ? ? ? ? ? ?//是否允許匿名用戶上傳

anon_mkdir_write_enable=NO? ? ? ? ?//是否允許匿名用戶創建目錄、可寫:不允許

idle_session_timeout=600? ? ? ? ? ? ? ?//設置登陸ftp后空閑時ftp的會話超時時間為600s

data_connection_timeout=120? ? ? ? ?//數據傳輸的超時時間為120s

max_clients=10? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?//最大客戶端數

8、創建虛擬用戶家目錄

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

9、在虛擬用戶家目錄下創建一個文件

? ? 這個文件用于我們后面的測試

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

10、修改所有者所屬組

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

11、修改ftp認證的文件

? ??/etc/pam.d/vsftpd是用于認證的文件,我們在登陸ftp時候有一個認證的過程,在認證的時候,就需要告訴ftp我們是通過什么樣的形式去認證,認證的時候去哪里找密碼庫,輸入的用戶名密碼是否正確需要找到這個庫來比對。

? ? 在/etc/pam.d/vsftpd這個文件中加入以下內容,這個修改用于告訴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

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

12、編輯vsftp的主配置文件

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

? ? 修改前:

? ? 修改后:

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

chroot_local_user=YES

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

guest_username=virftpuser ? ? ? //告訴vsftpd虛擬用戶映射過來的用戶名

virtual_use_local_privs=YES? ? ? ?//告訴vsftpd服務我們現在使用的是虛擬用戶

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

allow_writeable_chroot=YES

13、啟動vsftpd服務

????# systemctl start vsftpd? ? ? ? //啟動vsftpd服務

? ? # ps aux |grep vsftp? ? ? ? ? ? //查看vsftpd服務是否成功啟動

? ? # netstat -lntp? ? ? ? ? ? ? ? ? ? ?//查看vsftpd服務監聽的端口,監聽的是21端口


小知識:22端口是sshd,23端口是telnet監聽,telnet現在幾乎沒人用了

13、測試驗證

? ? 首先我們可以在windows上安裝一個ftp客戶端軟件,建議使用filezilla client,filezilla是一個ftp開源的免費的軟件,可以搭建服務,同時他也有一個客戶端軟件,為了測試方便,我們可以在linux上安裝一個ftp客戶端軟件lftp

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

? ? # lftp testuser1@127.0.0.1? ? ?//使用testuser1用戶登錄

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

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

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

/> get lijie.txt ? ? ? ? ? //獲取文件lijie.txt放到當前目錄下

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

# ls ? ? ? ? ? ? ? ? ? ? ? ? ?//在當前目錄下查看是否存在lijie.txt文件,可以看到,lijie.txt文件確實已經獲取到了

三 ?使用xshell來實現ftp類似功能

1、新建會話

? ? 在xshell中新建會話,協議類型選擇SFTP,端口號依然選擇22號端口,使用的是ssh協議

2、連接遠程服務器

? ? 連接剛才新建的會話指定的服務器

? ? 輸入用戶名和密碼后登陸成功,登陸成功界面如下,這時候默認是在root用戶下

? ? 我們來使用ls命令查看

? ? sftp:/root> ls

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

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

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

? ? 彈出下面的對話框,我們按照圖中步驟選擇本地存儲路徑

? ? 下面我們再來使用get命令傳輸文件就會保存到上圖我們設置的路徑里面去了


最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容