传统的FTP数据不够安全,所以服务器上一般采用SFTP的方式对数据进行加密。如果服务器上已经开通了SSH服务,我们就可以直接利用SSH来开通SFTP服务,无需再另外安装软件。
一,新建系统账号
1.1 新建账号分组
Groupadd sftp
1.2 新建账号paul
useradd -s /sbin/nologin -g sftp -d /ZServer/demo paul
passwd paul //设置账号的密码
说明:
-s 账号登陆的模式,/sbin/nologin表示此账号只能FTP登陆,不能系统访问
-g sftp: 账号属于sftp分组
-d :设置账号的根目录
【目录权限的要求】
如果要想paul可以SFTP账号登陆并成功访问/ZServer/demo目录,需要满足以下苛刻的条件。否则无法登录,给出的错误提示也让人摸不着头脑,无从查起。我在这上面浪费了很多时间。
Ø 账号的根目录需要完全属于账号本身。
Ø 账号根目录的上一级目录以及以上的全部目录都必须属于root账号,并且有且仅有root拥有写权限,也就是说权限最大设置为755。
1.3 设置账号根目录的权限
#cd /ZServer/
#chown -R paul:sftp demo/
#chown -R 755 demo/
二,SSH版本:
首先要升级OpenSSH的版本。只有4.8p1及以上版本才支持Chroot。
查看SSH版本的指令是:
# ssh –v
# OpenSSH_5.3p1, OpenSSL1.0.1e-fips 11 Feb 2013
usage: ssh[-1246AaCfgKkMNnqsTtVvXxYy] [-b bind_address] [-c cipher_spec]
[-D [bind_address:]port] [-eescape_char] [-F configfile]
[-I pkcs11] [-i identity_file]
[-L[bind_address:]port:host:hostport]
[-l login_name] [-m mac_spec] [-Octl_cmd] [-o option] [-p port]
[-R[bind_address:]port:host:hostport] [-S ctl_path]
[-W host:port] [-wlocal_tun[:remote_tun]]
[user@]hostname [command]
三,修改SSH配置文件
SSH版本满足要求后,需要修改SSH的配置文件。
SSH的最主要的配置文件有两个,分别为:
/etc/ssh/ssh_config
/etc/ssh/sshd_config
修改sshd_config如下:
#注释原来的Subsystem设置
Subsystem sftp /usr/libexec/openssh/sftp-server
#启用internal-sftp
Subsystem sftp internal-sftp
四,限制用户SFTP访问的根目录
#限制paul用户的根目录
Match User www
ChrootDirectory /ZServer
ForceCommand internal-sftp
【注意】
这里配置的账号paul被限制访问的目录,一定要是一个拥有者是root的目录,否则paul将无法被限制且会导致登陆各种错误和异常。
#限制blog和pay用户的根目录
Match Group sftp
ChrootDirectory %h
ForceCommand internal-sftp
五,最后重启SSH服务:
# service sshd restart
本文详细介绍如何通过SSH服务搭建SFTP,包括创建用户、设置目录权限、配置SSH版本及参数等步骤,确保数据传输的安全。
5万+

被折叠的 条评论
为什么被折叠?



