阿里云 ecs 的 centOS7.2 环境利用 xshell 配置 ftp 登录的用户账号和密码

版权声明:本文为博主原创文章,指明出处即可任意转载。 https://blog.csdn.net/Inite/article/details/78946684

       由于很久没使用 ftp 登录阿里云的服务器了,导致我忘了账号和密码,怎么尝试都失败。于是打算重新创建用户来登录 ftp 。现在就只能登录 xshell 了,这个的用户名可以使用 root 登录,密码的话就在阿里云控制台那里可以查到,也可以重置密码。然后现在就能登入 xshell 进行用户创建了。百度之后的命令如下:

1、安装 vsftpd 

查看是否已经安装 vsftpd 的命令如下:

rpm -qa | grep vsftpd

已经安装则会显示对应的版本号,未安装的话使用以下命令进行安装并设置开机启动:

yum -y install vsftpd

chkconfig vsftpd on

2、添加用户账号和设置密码,限制用户指向目录,禁止 ssh 登录。

useradd -d /webdata -g ftp -s/sbin/nologinyibin09    

注释:-d后面跟着指定的根目录,接着是禁止 ssh 登录(即不能使用此账号登录 xshell,默认是可以的),yibin09是指定的用户名。

passwd password

注释:设置密码为 password

这样就成功添加了账号密码,但是还是没能限制其只能访问上面设置的目录,而不能访问其他目录。

先进入配置文件 vsftpd.conf 进行设置

vi /etc/vsftpd/vsftpd.conf

去掉 anonymous_enable=NO 前面的 # 号表明禁止匿名登录

去掉 local_enable=YES 前面的 # 号表明允许本地用户登录

开启 chroot_list_enable=YES 和 chroot_list_file=/etc/vsftpd/chroot_list 表示列表内的用户不会被限制访问目录范围。

# You may specify an explicit list of local users to chroot() to their home
# directory. If chroot_local_user is YES, then this list becomes a list of
# users to NOT chroot().
# (Warning! chroot'ing can be very dangerous. If using chroot, make sure that
# the user does not have write access to the top level directory within the
# chroot)
chroot_local_user=YES
chroot_list_enable=YES
# (default follows)
chroot_list_file=/etc/vsftpd/chroot_list

增加以下设置表示 user_list 里面的用户才是可以通过 ftp 登录的用户白名单。

userlist_deny=NO
userlist_file=/etc/vsftpd/user_list

接下来就要访问文件 chroot_list 进行设置用户白名单(不限制访问目录的用户)

vi /etc/vsftpd/chroot_list

在里面添加你不用为该用户限制访问目录的用户名,上面刚才新建的用户账号 yibin09需要限制访问目录就不能往这里面加了,于是你可以跳过此步骤。

接着访问 文件 user_list

vi /etc/vsftpd/user_list

往里面添加刚才新建的用户 yibin09。

如下:

# vsftpd userlist
# If userlist_deny=NO, only allow users in this file
# If userlist_deny=YES (default), never allow users in this file, and
# do not even prompt for a password.

yibin09

然后保存退出。

最后重启 vsftpd ,命令:systemctl restart vsftpd

本来以为就这样就大功告成了,结果一直登录失败,很是纳闷。

百度后发现可能是端口没开放,还得去阿里云控制台里面的安全组添加入方向的规则。




在弹出来的输入框中规则规则方向是 入方向,授权策略选 允许,协议类型选 自定义TCP,端口范围设置 20/21,优选级 1为最高优先级,授权类型为地址段访问,授权对象是 0.0.0.0/0 ,保存之后再次登录发现还是不行。。。

问了同学最后叫我直接将协议类型选为 全部,端口范围 -1/1 就是默认开放所有端口,如下图:

 


结果顺利登录了ftp ......果然是端口问题啊啊啊!

百度之后发现 ftp 有两种模式(主动模式 port 和被动模式 pasv),主动模式控制连接的端口默认是21,数据传输端口默认是20,是客户端发送传输请求(提供自己开放的端口),然后告知服务端,服务端就给它传输数据;被动模式是客户端发送传输请求,服务端告知客户端自己开放了哪个端口,然后客户端自己来取数据,详细解释见上一篇转载的博文。PASV FTP由FTP客户端决定数据传输的端口。 有个最小和最大值。在 /etc/vsftpd/vsftpd.conf 文件里面进行设置:

vi /etc/vsftpd/vsftpd.conf

往里面追加设置:

pasv_enable=YES
pasv_min_port=10000
pasv_max_port=10004

保存并退出,再重启 vsftpd

systemctl restart vsftpd

最后到阿里云控制台的安全组增加入方向规则如下:


经测试最小端口需要是 20,最大必须包含上面的设置范围,10000测试过也是可以的,但是最好写上最大值 10004,更保险。

这样再使用 ftp 登录就大功告成了,而且该用户的目录被限制在刚才设置的目录下面,无法访问其他目录,而且该用户无法登录 xshell ,证明以上设置成功了!

好了!大致就是这样了,撤了。

后续补充:在本地给服务器传递文件时如果遇到以下错误:


原因是对该文件没写的权限,直接在刚才创建用户时指定目录下赋予写的权限即可:

sudo chmod -R 777 /webdata(你创建时指定的目录)

没有更多推荐了,返回首页

私密
私密原因:
请选择设置私密原因
  • 广告
  • 抄袭
  • 版权
  • 政治
  • 色情
  • 无意义
  • 其他
其他原因:
120
出错啦
系统繁忙,请稍后再试

关闭