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

15.4 xshell使用xftp傳輸文件

  • 打開xshell,新建一個會話窗口

  • mark

  • mark

  • 輸入它的用戶名 root 密碼123465

  • mark

  • 這個時候它默認是在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的文件在這裏

  • mark

  • 默認是放到桌面上mark

  • 這個時候get一個文件,它直接回給你傳到你的桌面上

  • mark

  • 這種是命令行,不太直觀,

  • 實際上還有一種方案,使用xftp,這個需要你安裝一個插件的,可以使用快捷鍵ctrl alt f

  • mark

  • 使用xshell登錄一個在線的主機,按下ctrl+alt+f,會自動彈出一個xftp的提示下載界面

  • 直接點擊下載ftp,這裏直接去r.aminglinux.com 找下載好的文件

  • mark

  • mark

  • mark

  • mark

  • 先把這個關掉,再去服務端機器上 再來運行Ctrl alt f

  • mark

  • mark

  • 現在把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 ~]#

-雙擊文件或者把文件拖過去就可以 mark

  • 現在桌面已經有這個文件了aming.txt mark


  • # 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


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章