15.4 xshell使用xftp傳輸文件
15.5 使用pure-ftpd搭建ftp服務
擴展
vsftp使用mysql存放虛擬用戶並驗證 http://www.aminglinux.com/bbs/thread-342-1-1.html
ftp的主動和被動模式 http://www.aminglinux.com/bbs/thread-961-1-1.html
15.4 xshell使用xftp傳輸文件
打開xshell,新建一個會話窗口
輸入它的用戶名 root 密碼123465
這個時候它默認是在root下
sftp:/root> ls dr-xr-x--- 5 root root 259 Nov 2 22:00 . dr-xr-xr-x 18 root root 236 Oct 5 15:52 .. -rw-r--r-- 1 root root 18 Dec 29 2013 .bash_logout -rw------- 1 root root 6472 Oct 30 23:09 .mysql_history -rw-r--r-- 1 root root 176 Dec 29 2013 .bash_profile -rw-r--r-- 1 root root 176 Dec 29 2013 .bashrc -rw-r--r-- 1 root root 100 Dec 29 2013 .cshrc -rw-r--r-- 1 root root 129 Dec 29 2013 .tcshrc -rw------- 1 root root 1261 Oct 5 22:26 anaconda-ks.cfg -rw------- 1 root root 27894 Nov 1 22:35 .bash_history drwxr----- 3 root root 19 Oct 5 21:56 .pki -rw------- 1 root root 1024 Oct 23 22:25 .rnd -rw------- 1 root root 91 Oct 30 23:19 .lesshst -rw------- 1 root root 7537 Nov 2 21:45 .viminfo drwxr-xr-x 3 root root 19 Nov 2 21:57 .local drwxr-xr-x 3 root root 18 Nov 2 21:57 .config -rw-r--r-- 1 root root 0 Nov 2 21:25 aming.txt sftp:/root> sftp:/root> cd /tmp sftp:/tmp> ls drwxrwxrwt 8 root root 240 Nov 2 21:55 . dr-xr-xr-x 18 root root 236 Oct 5 15:52 .. srwxrwxrwx 1 mysql mysql 0 Nov 2 20:45 mysql.sock srw-rw-rw- 1 root root 0 Nov 2 20:45 php-fcgi.sock srw-rw-rw- 1 root root 0 Nov 2 20:45 aming.sock -rw-r--r-- 1 root root 0 Nov 2 20:45 test.com.log drwx------ 3 root root 60 Nov 2 20:45 systemd-private-5e78e1c53e0f46fcab6cfa62e93122d0-vmtoolsd.service-hMpOXS drwxrwxrwt 2 root root 40 Nov 2 20:45 .XIM-unix drwxrwxrwt 2 root root 40 Nov 2 20:45 .ICE-unix drwxrwxrwt 2 root root 40 Nov 2 20:45 .font-unix drwxrwxrwt 2 root root 40 Nov 2 20:45 .Test-unix drwxrwxrwt 2 root root 40 Nov 2 20:45 .X11-unix
可以get一個文件
Fetching /tmp/test.com.log to test.com.logsftp: received 0 in 0.02 seconds sftp:/tmp>
get的文件在這裏
默認是放到桌面上
這個時候get一個文件,它直接回給你傳到你的桌面上
這種是命令行,不太直觀,
實際上還有一種方案,使用xftp,這個需要你安裝一個插件的,可以使用快捷鍵ctrl alt f
使用xshell登錄一個在線的主機,按下ctrl+alt+f,會自動彈出一個xftp的提示下載界面
直接點擊下載ftp,這裏直接去r.aminglinux.com 找下載好的文件
先把這個關掉,再去服務端機器上 再來運行Ctrl alt f
現在把21端口的 vsftpd 服務停掉,再試下傳輸文件
[root@aming-01 ~]# systemctl stop vsftpd [root@aming-01 ~]# netstat -lntpActive Internet connections (only servers) Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name tcp 0 0 0.0.0.0:111 0.0.0.0:* LISTEN 1/systemd tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 1239/nginx: master tcp 0 0 0.0.0.0:20048 0.0.0.0:* LISTEN 1067/rpc.mountd tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 1002/sshd tcp 0 0 0.0.0.0:43927 0.0.0.0:* LISTEN - tcp 0 0 127.0.0.1:25 0.0.0.0:* LISTEN 2134/master tcp 0 0 0.0.0.0:443 0.0.0.0:* LISTEN 1239/nginx: master tcp 0 0 0.0.0.0:2049 0.0.0.0:* LISTEN - tcp 0 0 0.0.0.0:38024 0.0.0.0:* LISTEN 910/rpc.statd tcp6 0 0 :::3306 :::* LISTEN 2026/mysqld tcp6 0 0 :::111 :::* LISTEN 1/systemd tcp6 0 0 :::20048 :::* LISTEN 1067/rpc.mountd tcp6 0 0 :::34868 :::* LISTEN 910/rpc.statd tcp6 0 0 :::22 :::* LISTEN 1002/sshd tcp6 0 0 ::1:25 :::* LISTEN 2134/master tcp6 0 0 :::41152 :::* LISTEN - tcp6 0 0 :::2049 :::* LISTEN - [root@aming-01 ~]#
-雙擊文件或者把文件拖過去就可以
現在桌面已經有這個文件了aming.txt
# 15.5 使用pure-ftpd搭建ftp服務 - pure-ftpd 比vftpd更加的輕量;更加簡單 - 安裝包 - yum install -y pure-ftpd ``` [root@aming-01 ~]# yum install -y pure-ftpd 已加載插件:fastestmirror Loading mirror speeds from cached hostfile 已安裝: pure-ftpd.x86_64 0:1.0.42-3.el7 作爲依賴被安裝: postgresql-libs.x86_64 0:9.2.23-1.el7_4 usermode.x86_64 0:1.111-5.el7 完畢! [root@aming-01 ~]# ``` - 更改配置文件vim /etc/pure-ftpd/pure-ftpd.conf ``` [root@aming-01 ~]# vim /etc/pure-ftpd/pure-ftpd.conf ############################################################ # # # Configuration file for pure-ftpd wrappers # # # ############################################################ # If you want to run Pure-FTPd with this configuration # instead of command-line options, please run the # following command : # # /usr/sbin/pure-config.pl /etc/pure-ftpd/pure-ftpd.conf # # Please don't forget to have a look at documentation at # http://www.pureftpd.org/documentation.shtml for a complete list of # options. # Cage in every user in his home directory ChrootEveryone yes # If the previous option is set to "no", members of the following group # won't be caged. Others will be. If you don't want chroot()ing anyone, # just comment out ChrootEveryone and TrustedGID. # TrustedGID 100 ``` - 搜索pdb 把前面的井號刪除,y也就是說要把前面的密碼 這一行指定 ``` PureDB /etc/pure-ftpd/pureftpd.pdb # Path to pure-authd socket (see README.Authentication-Modules) # ExtAuth /var/run/ftpd.sock # If you want to enable PAM authentication, uncomment the following line PAMAuthentication yes :wq [root@aming-01 ~]# vim /etc/pure-ftpd/pure-ftpd.conf [root@aming-01 ~]# ``` - 因爲vsftpd 和pure-ftpd 都是監聽21端口,如果裝有vsftpd,需要先暫停服務,如果不停掉在啓動pure-ftpd的時候會報錯,因爲你的21端口被佔用了, ``` [root@aming-01 ~]# systemctl stop vsftpd [root@aming-01 ~]# systemctl start pure-ftpd [root@aming-01 ~]# ps aux |grep ftp root 2396 0.0 0.1 53188 1944 ? Ss 23:24 0:00 /usr/libexec/openssh/sftp-server root 2535 0.0 0.1 202424 1196 ? Ss 23:49 0:00 pure-ftpd (SERVER) root 2537 0.0 0.0 112680 980 pts/0 R+ 23:50 0:00 grep --color=auto ftp [root@aming-01 ~]# netstat -lntp Active Internet connections (only servers) Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name tcp 0 0 0.0.0.0:111 0.0.0.0:* LISTEN 1/systemd tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 1239/nginx: master tcp 0 0 0.0.0.0:20048 0.0.0.0:* LISTEN 1067/rpc.mountd tcp 0 0 0.0.0.0:21 0.0.0.0:* LISTEN 2535/pure-ftpd (SER tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 1002/sshd tcp 0 0 0.0.0.0:43927 0.0.0.0:* LISTEN - tcp 0 0 127.0.0.1:25 0.0.0.0:* LISTEN 2134/master tcp 0 0 0.0.0.0:443 0.0.0.0:* LISTEN 1239/nginx: master tcp 0 0 0.0.0.0:2049 0.0.0.0:* LISTEN - tcp 0 0 0.0.0.0:38024 0.0.0.0:* LISTEN 910/rpc.statd tcp6 0 0 :::3306 :::* LISTEN 2026/mysqld tcp6 0 0 :::111 :::* LISTEN 1/systemd tcp6 0 0 :::20048 :::* LISTEN 1067/rpc.mountd tcp6 0 0 :::34868 :::* LISTEN 910/rpc.statd tcp6 0 0 :::21 :::* LISTEN 2535/pure-ftpd (SER tcp6 0 0 :::22 :::* LISTEN 1002/sshd tcp6 0 0 ::1:25 :::* LISTEN 2134/master tcp6 0 0 :::41152 :::* LISTEN - tcp6 0 0 :::2049 :::* LISTEN - [root@aming-01 ~]# ``` - 下面我們來創建一個測試的目錄 - 給pure-ftpd用戶使用 mkdir /data/ftp - 創建一個普通用戶 useradd -u 1010 pure-ftp - 更改一下屬主、屬組權限 chown -R pure-ftp:pure-ftp /data/ftp - 創建一個用戶, - 同樣是虛擬用戶映射系統用戶 pure-pw useradd [指定用戶] -u [指定系統用戶] -d [指定虛擬用戶的家目錄] pure-pw useradd ftp_usera -u pure-ftp -d /data/ftp //密碼爲“123456” - 添加完之後,讓 pure-ftpd 建立虛擬用戶數據 pure-pw mkdb - 查看命令說明文件pure-pw list/userdel/usermod/passwd ``` [root@aming-01 ~]# mkdir /data/ftp [root@aming-01 ~]# useradd -u 1010 pure-ftp [root@aming-01 ~]# chown -R pure-ftp:pure-ftp /data/ftp [root@aming-01 ~]# [root@aming-01 ~]# pure-pw useradd ftp_usera -u pure-ftp -d /data/ftp Password: Enter it again: [root@aming-01 ~]# pure-pw mkdb ``` - 下面來測試下 ``` [root@aming-01 ~]# touch /data/ftp/123.txt [root@aming-01 ~]# lftp [email protected] 口令: lftp [email protected]:~> ls drwxr-xr-x 2 1010 pure-ftp 21 Nov 3 00:00 . drwxr-xr-x 2 1010 pure-ftp 21 Nov 3 00:00 .. -rw-r--r-- 1 0 0 0 Nov 3 00:00 123.txt lftp [email protected]:/> ``` - 不妨給它改下屬主屬組 ``` lftp [email protected]:/> quit [root@aming-01 ~]# chown pure-ftp:pure-ftp /data/ftp/123.txt [root@aming-01 ~]# lftp [email protected] 口令: lftp [email protected]:~> ls drwxr-xr-x 2 1010 pure-ftp 21 Nov 3 00:00 . drwxr-xr-x 2 1010 pure-ftp 21 Nov 3 00:00 .. -rw-r--r-- 1 1010 pure-ftp 0 Nov 3 00:00 123.txt lftp [email protected]:/> lftp [email protected]:/> quit [root@aming-01 ~]# ``` - 擴展 - [x] vsftp使用mysql存放虛擬用戶並驗證 http://www.aminglinux.com/bbs/thread-342-1-1.html vsftp 利用mysql 驗證虛擬賬戶 賬戶 驗證 虛擬 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 虛擬賬號 - [x] ftp的主動和被動模式 http://www.aminglinux.com/bbs/thread-961-1-1.html ftp的主動模式與被動模式的區別是什麼? 中文意思 客戶端 服務器 資料分享 FTP協議有兩種工作方式:PORT方式和PASV方式,中文意思爲主動模式和被動模式 一、什麼是主動FTP 主動模式的FTP工作原理:客戶端從一個任意的非特權端口N連接到FTP服務器的命令端口,也就是21端口。然後客戶端開始監聽端口N+1,併發送FTP命令“port N+1”到FTP服務器。接着服務器會從它自己的數據端口(20)連接到客戶端指定的數據端口(N+1)。 針對FTP服務器前面的防火牆來說,必須允許以下通訊才能支持主動方式FTP: 1、 任何大於1024的端口到FTP服務器的21端口。(客戶端初始化的連接) 2、 FTP服務器的21端口到大於1024的端口。 (服務器響應客戶端的控制端口) 3、 FTP服務器的20端口到大於1024的端口。(服務器端初始化數據連接到客戶端的數據端口) 4、 大於1024端口到FTP服務器的20端口(客戶端發送ACK響應到服務器的數據端口) 二、什麼是被動FTP 爲了解決服務器發起到客戶的連接的問題,人們開發了一種不同的FTP連接方式。這就是所謂的被動方式,或者叫做PASV,當客戶端通知服務器它處於被動模式時才啓用。 在被動方式FTP中,命令連接和數據連接都由客戶端發起,這樣就可以解決從服務器到客戶端的數據端口的入方向連接被防火牆過濾掉的問題。 當開啓一個 FTP連接時,客戶端打開兩個任意的非特權本地端口(N > 1024和N+1)。第一個端口連接服務器的21端口,但與主動方式的FTP不同,客戶端不會提交PORT命令並允許服務器來回連它的數據端口,而是提交 PASV命令。這樣做的結果是服務器會開啓一個任意的非特權端口(P > 1024),併發送PORT P命令給客戶端。然後客戶端發起從本地端口N+1到服務器的端口P的連接用來傳送數據。 對於服務器端的防火牆來說,必須允許下面的通訊才能支持被動方式的FTP: 1、 從任何大於1024的端口到服務器的21端口(客戶端初始化的連接) 2、 服務器的21端口到任何大於1024的端口(服務器響應到客戶端的控制端口的連接) 3、 從任何大於1024端口到服務器的大於1024端口(客戶端初始化數據連接到服務器指定的任意端口) 4、 服務器的大於1024端口到遠程的大於1024的端口(服務器發送ACK響應和數據到客戶端的數據端口) 從上面可以看出,兩種方式的命令鏈路連接方法是一樣的,而數據鏈路的建立方法就完全不同,如下圖: FTP服務器的主動工作模式 port.jpg FTP服務器的被動工作模式 pasv.jpg 以上關於主動和被動FTP的解釋,可以簡單概括爲以下兩點: 1、主動FTP: 命令連接:客戶端 >1024端口 -> 服務器 21端口 數據連接:客戶端 >1024端口 <- 服務器 20端口 2、被動FTP: 命令連接:客戶端 >1024端口 -> 服務器 21端口 數據連接:客戶端 >1024端口 -> 服務器 >1024端口 三、主動模式ftp與被動模式FTP優點和缺點: 主動FTP對FTP服務器的管理和安全很有利,但對客戶端的管理不利。因爲FTP服務器企圖與客戶端的高位隨機端口建立連接,而這個端口很有可能被客戶端的防火牆阻塞掉。被動FTP對FTP客戶端的管理有利,但對服務器端的管理不利。因爲客戶端要與服務器端建立兩個連接,其中一個連到一個高位隨機端口,而這個端口很有可能被服務器端的防火牆阻塞掉。 pasv.jpg