腾讯云服务器ftp部署及文件上传
首先,先把服务器的配置说明一下:
操作系统:CentOS 6.6 64位
CPU:1核
内存:1GB
系统盘:20G(云硬盘)
公网带宽:1Mbps
对我来说挺合适的一个配置,把自己的爬虫放上面运行,数据存MySQL里面已经足够用了。
之前那篇写的是配置桌面环境,可是后来发现这个配置再加上个桌面环境,卡的我都不想说了….于是还是老老实实用字符界面了。
1.首先是安装ftp服务并且开启它:
sudo yum install vsftpd
等待它安装完成,之后开始配置相关文件
vi /etc/vsftpd/vsftpd.conf
进入到这个文件中,找到如下这几行:
anonymous_enable=YES,将其中的YES换成NO。
这个NO就表示禁止用户匿名登陆,也就是需要账号密码。
local_enbale=YES 确认这一项是YES,意思是允许本地账户进行ftp用户登陆。
我们还需要设置user_list,将其他所有的敏感账号给注释掉,然后添加自己的username(见下,你自己添加的登陆账号),之后再执行vi /etc/vsftpd/vsftpd.conf,在其中添加一行userlist_deny=NO,表示不禁用user_list里的账号。这个时候其中的账号只有你下面的步骤中添加的账号,也就是运行你用自己创建的账号登陆。
改了这三项,其他暂时不需要更改了,我们的目的是要配置好ftp服务,让自己通过设定的ftp账户登陆,上传文件到服务器上
使用如下命令查看是否设置成功:
cat /etc/vsftpd/vsftpd.conf | grep ^[^#]
这个^是正则表达式中的字符,单个^表示匹配以它后面那个字符开始的所有行,如^#:匹配以#开头的所有行,也就是全部注释行了。
[^] 这个恰恰相反,匹配不包括它后面的字符的所有行,[^#]也就是不包含#号的行,再加上一个^表明要匹配每个行。就找出所有没被注释的行了。
这里就稍微提一下,正则是个大学问,有待学习…..
输完上面的语句,就表明将所有的没被注释的行cat出来了,看看其中有没有刚才提到的两行,以及是否正确。
2.我们已经设定了什么人可以登陆,也安装好了ftp,现在添加认证账户
useradd -m -d /home/ftp -s /sbin/nologin username
这里的-m表示makedir建立目录,-d表示指定的目录这里是/home下建立一个指定的ftp目录。
-s是制定用户默认的shell权限,这里使用的/sbin/nologin,这个shell是专门使用于ftp,ssh,mail等服务。
它被禁止登陆系统,就是无法su,sudo等命令,也就无法获得最高权限,安全性高。
username是你自己设定的名字,这个home下的文件夹(我写的是ftp)也随你喜欢的名字设定。
为这个账号添加密码,这个简单,老早就学过,就是普通用户加密码:
passwd username
最后,依照腾讯给的官方帮助文档,说是要更改pam(可拔插认证模块)模块设置,针对ftp登陆的实体用户的过滤,但是我试过了更改不更改都能成功登陆ftp,但是为了安全起见,还是照着文档里来一下把。
vi /etc/pam.d/vsftpd
修改所有内容为:
%PAM-1.0
原先的第一行,看下面解释
auth required /lib64/security/pam_listfile.so item=user sense=deny file=/etc/ftpusers onerr=succeed
auth required /lib64/security/pam_listfile.so item=user sense=deny file=/etc/vsftpd/ftpusers onerr=succeed
auth required /lib64/security/pam_unix.so shadow nullok
auth required /lib64/security/pam_shells.so
account required /lib64/security/pam_unix.so
session required /lib64/security/pam_unix.so
1
2
3
4
5
6
7
8
1
2
3
4
5
6
7
8
但是我locate ftpusers好像出来的目录是/etc/vsftpd/ftpusers,所以上面的file应该改成对应的ftpusers路径。也是如上所示。
最后大功告成:
service vsftpd restart
重新启动vsftp服务,这个ftp服务就配置好了。
3.最后一步
到了这里,我们的ftp服务以及完全配好了。但是这时候你直接终端远程登陆可能会发现并不能登陆,总是报出connect time out,在网页下输入ftp://公网ip 也是一直进不去….
而我在本地实验过,ftp 127.0.0.1,是能验证用户名和密码登陆的,也就是说ftp服务没问题,这时候我们应该想到的是不是防火墙把你屏蔽了…..
根据这个点,最后终于找到了原因 …..我们用的是腾讯的云服务器,它默认有对服务器的内外网访问权限控制,也就是说是这个访问控制把我们的ftp请求屏蔽在了外面。
我们进到云服务器控制台,找到安全组,点击新建:
这里写图片描述
内容随便你写,你能看懂就行。
之后点击编辑,入站规则。新增一行:
这里写图片描述
添加一个21端口的tcp协议的规则,ftp协议就是基于tcp协议的。
点击加入云主机:
这里写图片描述
之后会连着默认的一个Linux安全组放通22端口加入云主机,再使用ftp,你会发现这时候提示你输入账号密码了,username和password,成功登陆。
4.文件上传
这个简单,最好将你要上传的文件打个包,在ftp下:
put 路径/example.tar.gz /home/ftp/example.tar.gz
这样就将要传的文件提交到了服务器上的/home/ftp/目录下,文件名字自己取。
有什么错误的地方希望指出,谢谢。