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的用户列表,分两种情况:
- 如果vsftpd.conf配置文件userlist_deny=YES,则用户列表里的用户禁止登陆(默认)
- 如果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 文件上传还有点问题,待定
网友评论