美文网首页
文件传输

文件传输

作者: He_Define | 来源:发表于2017-10-09 16:33 被阅读40次

    1、前言

    一般来说,你不可能在服务器上编写php代码之类的,这样既不安全,也很难回退版本之类的,而且还会有相当的延迟。所以一般我们都是本地编写,然后上传到服务器。
    上传到服务器的方式有很多种,接下来本章节主要介绍几种上传到服务器的方法。同时,我也会接下来几个章节主要介绍我们的Git服务器部署以及配置。

    2. SCP传输文件

    SCP是简单的文件传输命令,因为是加密的,所以很安全,内网传输速度快。

    # 1、本地   ---文件-->   远程服务器
    # 格式:
    $ scp [-P 端口号] <本地文件路径>  <远程服务器用户名>@<远程服务器ip地址>:<要上传到远程服务器的文件位置>
    ### 如:
    $ scp /usr/local/nginx/html/50x.html root@139.xxx.xxx.xxx:/home/guest/scp
    root@139.xxx.xxx.xxx's password:       #输入密码
    # 50x.html           100%  537     6.8KB/s   00:00  
    ##### 传输成功 ####
    
    # 2、远程服务器  ---文件-->   本地
    # 格式:
    $ scp [-P 端口号] [远程服务器用户名]@[远程服务器ip地址]:[远程服务器文件路径]  [本地文件路径]
    ### 如:
    $ scp root@139.xxx.xxx.xxx:/home/guest/scp/50x.html /tmp
    root@139.xxx.xxx.xxx's password:    #输入密码
    # 50x.html        100%  537    12.2KB/s   00:00     
    ##### 下载成功 #####
    
    # 3、 本地    ---文件夹-->  远程服务器
    $ scp [-P 端口号] -r [本地文件夹路径]  [远程服务器用户名]@[远程服务器ip地址]:[要上传到远程服务器的文件位置]
    
    # 4、远程服务器  ---文件夹--> 本地
    $ scp [-P 端口号] -r [远程服务器用户名]@[远程服务器ip地址]:[远程服务器文件夹路径]  [本地文件路径]
    

    3. sftp文件传输

    类似ftp传输文件,但是比ftp更加安全

    $sftp root@139.xxx.xxx.xxx              # 通过sftp连接到远程服务器
    root@139.xxx.xxx.xxx's password:        # 输入登录密码
    Connected to 139.xxx.xxx.xxx.           # 已连接到远程服务器
    sftp> put <本地文件路径> <远程文件路径>     # 上传文件
    sftp> get <远程文件路径> <本地文件路径>     # 下载文件
    

    4. ftp传输文件

    1.部署FTP文件服务器
    2.FTP服务器主要下载组件vsftpd(Very Secure FTP)
    3.FTP服务端口(21端口用于连接,20端口)

    1、配置安装启动Ftp

    1、 下载vsftpd

    $yum search vsftpd
    $yum install vsftpd
    

    2、 修改配置开机启动

    ###配置文件位于 /etc/vsftpd/ 详细参数见Tips
    $chkconfig --level 35 vsftpd on    #开机启动
    

    3、启动ftp服务

    $service vsftpd start
    #或:
    $systemctl start vsftpd.service
    

    2、配置文件详解

    配置文件路径: /etc/vsftpd
    配置文件夹主要有三个文件(sh文件不算):

    • ftpusers
    • user_list
    • vsftpd.conf
    1. ftpusers

    禁止使用ftp的用户列表,即FTP黑名单

    2. user_list

    禁止或者允许使用ftp的用户列表,分两种情况:

    1. 如果vsftpd.conf配置文件userlist_deny=YES,则用户列表里的用户禁止登陆(默认)
    2. 如果vsftpd.conf配置文件userlist_deny=NO,则用户列表里的用户允许登录
    3. vsftpd.conf内容详解:
    # 默认配置文件地址 /etc/vsftpd/vsftpd.conf
    
    ### 监听
    listen_address=ip_addr                  # 指定监听的ip地址
    listen_port=21                          # 监听的端口位置(默认FTP端口21)
    listen=NO                               # 开启ipv4监听
    listen_ipv6=YES                         # 开启piv6监听
    
    ### 用户
    #nopriv_user=ftpsecure                  # 指定vsftp服务运行的账户,默认是ftp
    local_root=/home/ftp                    #所有用户(除匿名用户)根目录
    write_enable=YES                        # 是否允许用户写文件
    
    ####### 本地用户
    local_enable=YES                        # 是否允许本地用户登录
    local_umask=022                         # 设置本地用户生成文件的掩码为022(若不设置为077)
    #local_max_rate = 300                    # 本地用户最大传输速度(Byts/s)
    
    ####### 匿名用户
    anonymous_enable=YES                    # 是否允许匿名登录
    anon_upload_enable=YES                  # 是否允许匿名用户上传文件                  
    anon_mkdir_write_enable=YES             # 是否允许匿名用户创建和写文件
    #anon_max_rate = 300                     # 匿名用户最大传输速度(Byts/s)
    
    ####### 虚拟用户
    userlist_enable=YES                     # 仅仅user_list里的用户可以访问
    #userlist_deny=YES
    
    # email用户
    #deny_email_enable=YES                  # 是否拒绝banned_email_file里面的email地址登录
    #banned_email_file=/etc/vsftpd/banned_emails    # 默认banned_email_file路径
    
    ###权限
    
    chown_uploads=YES                       # 是否具备上传权限,用户由chown_username指定
    chown_username=whoever
    
    #chroot_local_user=YES                  # 限制所有本地用户只能在自家目录
    #chroot_list_enable=YES                 # 指定不能离开用户目录的用户
    #chroot_list_file=/etc/vsftpd/chroot_list   # 默认的chroot_list文件位置
    
    
    
    ###日志
    xferlog_enable=YES                      # 是否开启上传下载日志
    xferlog_file=/var/log/xferlog           # 日志位置
    xferlog_std_format=YES                  # 标准日志格式
    
    
    ###超时操作
    idle_session_timeout=600               # 设置用户600(s)后没有操作的话,连接中断
    data_connection_timeout=120            # 设置用户120(s)后没有进行数据连接,连接中断
    
    
    ###系统设置
    ftpd_banner=Welcome to blah FTP service.# 用户连接服务器后显示的消息
    
    #async_abor_enable=YES                  # 是否允许客户端使用sync等命令
    
    ascii_upload_enable=YES                 # 是否允许上传二进制文件
    ascii_download_enable=YES               # 是否允许下载二进制文件
    dirmessage_enable=YES                   # 当切换到目录时,是否显示该目录下的.message隐藏文件的内容
    
    #ls_recurse_enable=YES                  # 是否允许使用ls -R等操作
    pam_service_name=vsftpd                 # 设置PAM认证服务的配置文件名称,该文件存放在/etc/pam.d/ 
    tcp_wrappers=YES                        # 在vsftpd中是否使用TCP_Wrappers远程访问控制机制,默认YES
    
    connect_from_port_20=YES                # 是否使用20端口传输数据(主动模式)
    
    
    4、PAM认证,实现虚拟账号登录FTP服务器(推荐)
    #安装组件包
    $yum install db4* -y
    
    

    坑:

    坑1. 匿名用户开启上传文件遇到的坑

    开启上传文件,需要先在配置文件中设置

    write_enable=YES
    anon_upload_enable=YES
    anon_mkdir_write_enable=YES
    

    但是,设置完配置文件并重启后,并不能上传文件,还需要额外的设置:

    # 1.观察是否开启SeLinux功能
    $getsebool             
          #两种结果:
              #1.显示"usage:  getsebool -a or getsebool boolean...",说明已开启
              #2.显示 "getsebool:  SELinux is disabled",说明已关闭
    
    # 2.开启Selinux(如果已开启跳过)
    $vim /etc/selinux/config
    把selinux=disable   改为  selinux=1
    #开启后需要重启电脑
    
    # 3.查看ftp设置
    $getsebool -a | grep ftp
      #显示内容如下:
    

    ftp_home_dir --> off
    ftpd_anon_write --> off
    ftpd_connect_all_unreserved --> off
    ftpd_connect_db --> off
    ftpd_full_access --> off
    ftpd_use_cifs --> off
    ftpd_use_fusefs --> off
    ftpd_use_nfs --> off
    ftpd_use_passive_mode --> off
    httpd_can_connect_ftp --> off
    httpd_enable_ftp_server --> off
    sftpd_anon_write --> off
    sftpd_enable_homedirs --> off
    sftpd_full_access --> off
    sftpd_write_ssh_home --> off
    tftp_anon_write --> off
    tftp_home_dir --> off

    4.设置SeLinux上ftp操作

    $setsebool -P allow_ftpd_anon_write on
    $setsebool -P allow_ftpd_full_access on

    FTP 文件上传还有点问题,待定

    相关文章

      网友评论

          本文标题:文件传输

          本文链接:https://www.haomeiwen.com/subject/krspyxtx.html