vsftp服务器部署
环境: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。
最新文章
- vim - save current file with a new name but keep editing current file
- java 堆栈的区别(转百度)
- 基于能量收集的智能家居-2013国家级大学生创业实践项目申报_商业计划书_V0.2
- Football(POJ3071)
- 转: Android异步加载图像小结
- leetcode_question_104 Maximum Depth of Binary Tree
- Zabbix 监控数据库MSSqlServer
- bsxfun
- FineUIPro v5.2.0已发布(jQuery升级,自定义图标,日期控件)
- 『链接』Microsoft Visual C Redistributable/VC 再发行库 下载哪家强?
- git 合并分支到master
- jQuery实现遮罩层
- Windows10 bypassUAC绕过用户账户控制
- 【项目 &#183; WonderLand】 系 统 设 计
- odoo订餐系统之菜单设计
- 迷失第一季/全集Lost 1迅雷下载
- OpenCV探索之路(十七):Mat和IplImage访问像素的方法总结
- Redis之数据持久化RDB与AOF
- ubuntu14.04安装chromium以及flash插件
- SQLServer学习-- Microsoft SQL Server 2008 Management Studio Express
热门文章
- 微软职位内部推荐-Software Development Engineer II_Commerce
- Ubuntu环境如何上传项目到GitHub网站?
- Python的三种格式化输出
- ElasticSearch 2 (37) - 信息聚合系列之内存与延时
- 组件 -- Badge
- PSP(4.13——4.19)以及周记录
- [代码]--ORA-01745: 无效的主机/绑定变量名 ORA-00917: 缺失的逗号 oracle日期格式错误
- BZOJ3434 WC2014时空穿梭(莫比乌斯反演)
- BZOJ1815 SHOI2006有色图(Polya定理)
- maven项目打包时生成dependency-reduced-pom.xml