环境:CentOS 6.6

目标:个人虚机部署vsftp服务器,供测试使用。

说明:步骤已改写为脚本,直接添加用户与对应的密码列表,调用函数名即可

#####################################################################################
##函数功能:安装sftp服务器,并设置用户
##使用方法:直接调用函数名称
## vsftp_install_set
##代码测试:CentOS 6.6 X64下测试通过
#注意事项:
# 用ssh -V 命令来查看openssh的版本,版本必须大于4.8p1,低于的这个版本需要升级
# 要添加的sftp用户列表和密码顺序要一一对应
##################################################################################### v_sftp_group="sftp"
v_sftp_dir="/data/sftp"
v_user_list=(
sms
tom
)
v_pwd_list=(
'!#@' #注意:密码为!#@
asfwe_12
)
sftp_install_set(){
#yum -y install openssh
groupadd ${v_sftp_group}
mkdir -p ${v_sftp_dir}
sed -i 's/^Subsystem/#&/g' /etc/ssh/sshd_config
cat>>/etc/ssh/sshd_config<<EOF
Subsystem sftp internal-sftp
Match Group ${v_sftp_group}
ChrootDirectory ${v_sftp_dir}/%u
ForceCommand internal-sftp
AllowTcpForwarding no
X11Forwarding no
EOF
for (( i = ; i < ${#v_user_list[*]}; i++ )); do
for (( j = i; j < ${#v_pwd_list[*]}; j++ )); do
if [[ j -eq i ]]; then
useradd -g ${v_sftp_group} -d ${v_sftp_dir}/${v_user_list[i]} -s /bin/false ${v_user_list[i]}
echo ${v_pwd_list[j]} | passwd --stdin ${v_user_list[i]} #ChrootDirectory必须是root用户所有,否则报错:Couldn't read packet: Connection reset by peer
#该目录赋权为755或750
chown root:${v_sftp_group} ${v_sftp_dir}/${v_user_list[i]}
chmod ${v_sftp_dir}/${v_user_list[i]}
#设置用户自己可读写的目录,否则在ChrootDirectory下没有读写权限
mkdir -p ${v_sftp_dir}/${v_user_list[i]}/upload
chown ${v_user_list[i]}:${v_sftp_group} ${v_sftp_dir}/${v_user_list[i]}/upload
chmod ${v_sftp_dir}/${v_user_list[i]}/upload
mkdir -p ${v_sftp_dir}/${v_user_list[i]}/download
chown ${v_user_list[i]}:${v_sftp_group} ${v_sftp_dir}/${v_user_list[i]}/download
chmod ${v_sftp_dir}/${v_user_list[i]}/download
fi
done
done
#停用selinux,否则会报错:Couldn't get handle: Permission denied
sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config
setenforce
#操作完毕,重启ssh服务
service sshd restart
}

以下为手动操作记录:

打开命令终端窗口,按以下步骤操作。

# ssh -V  #查看openssh的版本,版本必须大于4.8p1,低于的这个版本需要升级。

1、创建sftp组

# groupadd sftp

2、创建一个sftp用户sms,密码自定义

# useradd -g sftp -s /bin/false sms #用户名
# passwd sms #密码

-g sftp:指定用户所属组为sftp

-s /bin/false:禁止用户登录shell

3、sftp组的用户的home目录统一指定到/data/sftp下,按用户名区分,这里先新建一个sms用户目录,然后指定sms的home为/data/sftp/sms

# mkdir -p /data/sftp/sms
# usermod -d /data/sftp/sms sms
或在执行步骤2时,执行命令:
# useradd -g sftp -s /bin/false -d /data/sftp/sms sms #-d 参数指定用户默认的家目录路径

4、配置sshd_config
备份/etc/ssh/sshd_config配置文件,并编辑

# cp /etc/ssh/sshd_config /etc/ssh/sshd_config.bak
# vim /etc/ssh/sshd_config

找到如下这行,用#符号注释掉,大致在文件末尾处。

# Subsystem sftp /usr/libexec/openssh/sftp-server

在文件末尾添加如下内容:

Subsystem sftp internal-sftp   #使用internal-sftp,而非sftp-server
Match Group sftp #限制使用的用户组
ChrootDirectory /data/sftp/%u #限制用户只能操作自己用户目录下的内容
ForceCommand internal-sftp #使用internal-sftp命令
AllowTcpForwarding no
X11Forwarding no

注:最好在末尾添加,否则配置代码顺序不对可能会导致sftp配置失败。

5、设定Chroot目录权限

# chown root:sftp /data/sftp/sms
# chmod /data/sftp/sms

注:

设置用户家目录为root:sftp,否则会报错:Write failed: Broken pipe Couldn't read packet: Connection reset by peer;

设置用户目录操作权限为750或755

6、建立SFTP用户登入后可写入的目录
照上面设置后,在重启sshd服务后,用户sms已经可以登录。但使用chroot指定根目录后,根应该是无法写入的,所以要新建一个目录供sms上传文件。这个目录所有者为sms,所有组为sftp,所有者有写入权限,而所有组无写入权限。命令如下:

# mkdir /data/sftp/sms/upload
# chown sms:sftp /data/sftp/sms/upload
# chmod /data/sftp/sms/upload

注:这步很重要,否则用户直接在家目录下进行操作,是不能进行创建文件的,vsftp服务无法使用。

7、修改/etc/selinux/config(可选)
文本编辑器打开/etc/selinux/config

vi /etc/selinux/config 

将文件中的SELINUX=enforcing 修改为 SELINUX=disabled ;执行如下命令使设置生效:

# setenforce 

8、重启sshd服务

# service sshd restart

9、验证sftp环境
用sms用户名登录,yes确定,回车输入密码。

sftp sms@127.0.0.1 

显示 sftp> 则sftp搭建成功。

10、Windows客户端:

使用FileZilla FTP Client连接SFTP服务器
输入主机IP地址、用户名、密码、端口连接SFTP服务器,端口默认为22。

vsftp服务器部署的更多相关文章

  1. asp.net core 简单部署之FTP配置(CentOS 7.0安装配置Vsftp服务器)

    配置过程原文地址:http://www.osyunwei.com/archives/9006.html 坑和结果 正确的跟着这个内容走,是靠谱的. 我自己给自己踩了个坑,请参照文章的朋友注意第七条:七 ...

  2. [转] Linux 中提高 VsFTP 服务器的安全性

    FTP是互联网应用中的一个元老级人物了,其方便企业用户文件的共享.但是,安全问题也一直伴随在FTP左右.如何防止攻击者通过非法手段窃取FTP服务器中的重要信息;如何防止攻击者利用FTP服务器来传播木马 ...

  3. 分享阿里云推荐码 IC1L2A,购买服务器可以直接打9折,另附阿里云服务器部署ASP.NET MVC5关键教程

    阿里云推荐码为:IC1L2A 阿里云还是不错滴. 以windows server 2008 R2为例,介绍如何从全新的服务器部署MVC5 站点. 新购买的阿里云服务器是没有IIS的,要安装IIS: 控 ...

  4. CentOS 7.0安装配置Vsftp服务器

    一.配置防火墙,开启FTP服务器需要的端口 CentOS 7.0默认使用的是firewall作为防火墙,这里改为iptables防火墙. 1.关闭firewall: systemctl stop fi ...

  5. HappyAA服务器部署笔记1(nginx+tomcat的安装与配置)

    这是本人的服务器部署笔记.文章名称叫"部署笔记1"的原因是之后我对这个进行了改进之后,会有"部署笔记2","部署笔记3"...循序渐进,估计 ...

  6. ASP.NET生成WORD文档,服务器部署注意事项

    网上转的,留查备用,我服务器装的office2007所以修改的是Microsoft Office word97 - 2003 文档这一个. ASP.NET生成WORD文档服务器部署注意事项 1.Asp ...

  7. 在Ubuntu14.04下安装vsftp服务器

    猜想在Ubuntu下搭建ftp服务器来实现windows和ubuntu下文件互传是一件很简单的事儿,但是在网上找了好几篇文章都不行,故自己在这里总结一下方法. 首先安装vsftp服务器 sudo ap ...

  8. 同一服务器部署多个tomcat时的端口号修改详情

    同一服务器部署多个tomcat时,存在端口号冲突的问题,所以需要修改tomcat配置文件server.xml,以tomcat7为例. 首先了解下tomcat的几个主要端口: <Connector ...

  9. Linux平台下Lotus Domino服务器部署案例

    Linux平台下Lotus Domino服务器部署案例 几年前我写了篇<RHAS2.1下安装中文LotusDominoR6.5图解>这篇文档被多个大型网站转载,曾帮助过很多公司系统管理员部 ...

随机推荐

  1. BugPhobia准备篇章:Scrum Meeting工作分析篇

    特别说明:此博客不计入正式开发过程的Scrum Meeting篇章,只是工作的基础分析 前端 王鹿鸣.钱林琛撰写初稿 能否前端完成一个页面后就能在本地跑起来进行测试? 能否在前端和后端完成对接后单页面 ...

  2. 每日scrum(7)

    今天是小组用来写文稿的日子,包括软件需求分析报告,概要设计报告,详细设计报告,数据库设计报告,软件测试报告,各组员领取自己的任务然后完成~ 任务看板: 燃尽图:

  3. OFART: OpenFlow-Switch Adaptive Random Testing

    文章名称:OFART: OpenFlow-Switch Adaptive Random Testing 发表时间:2017 期刊来源:--- 摘要 问题: 如果转发设备的正确性没有验证,这将影响这个网 ...

  4. [Week2 作业] 代码规范之争

    这四个问题均是出自 http://goodmath.scientopia.org/2011/07/14/stuff-everyone-should-do-part-2-coding-standards ...

  5. 团队伊始——DreamCatcher

    我们的团队,队名是DreamCatcher,中文意思是追梦人,它是一首歌曲,所属专辑是<新世纪的曙光>. 这是一首很好听的歌曲,里面有一句歌词是: I'm a dream catcher ...

  6. 11th 如果重新来过

    如果重新来过,我想我不会再因任何阻碍而选择中途放弃了.为了追求完美,结果做不到自己想要的程度,就备感挫败感,于是乎就求全责备,无法继续进行下去,即便你一直原地踏步,其实也就相当于是放弃了,跟不做没有什 ...

  7. Caffe使用: Ubuntu 14.04(x64) 从cuda 7.0 升级到 cuda8.0

    由于之前已经在Ubuntu 14.04 x64上面安装cuda7.0+caffe, 并且已经配置好,caffe也已经跑通. 但是最近需要使用Torch,而Torch对cuda的要求是8.0,因此决定对 ...

  8. Java_按位与&,按位或,取反,左移,右移运算符

    //按位与运算& System.out.println(0&0);//0 System.out.println(0&1);//0 System.out.println(1&am ...

  9. BZOJ2741 FOTILE模拟赛L(分块+可持久化trie)

    显然做个前缀和之后变成询问区间内两个数异或最大值. 一种暴力做法是建好可持久化trie后直接枚举其中一个数查询,复杂度O(nmlogv). 观察到数据范围很微妙.考虑瞎分块. 设f[i][j]为第i个 ...

  10. Educational Codeforces Round 14 D. Swaps in Permutation(并查集)

    题目链接:http://codeforces.com/contest/691/problem/D 题意: 题目给出一段序列,和m条关系,你可以无限次互相交换这m条关系 ,问这条序列字典序最大可以为多少 ...