文件传输

2017-10-09  本文已影响40人  He_Define

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文件不算):

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 文件上传还有点问题,待定

上一篇下一篇

猜你喜欢

热点阅读