linux下sftp配置详解

最近客户机构要求传输数据加密,点名要用sftp。我们本来打算是使用FTP+SSL+IP认证的方案,但是无奈客户并不接受这种方案。所以,就只能乖乖的上SFTP了。由于SFTP是SSH的一部分(与传统的FTP没有任何关系),因此,配置SFTP不需要传统的FTP服务器软件。仅需要OpenSSH服务器即可。好的,下面我们就来看看如何搭建一个安全的SFTP。

添加如下几行

解释一下每一行的意思
Subsystem sftp internal-sftp
这行指定使用sftp服务使用系统自带的internal-sftp
Match Group sftp
匹配sftp组的用户,如果有多个组用逗号分割
也可以使用“Match User mysftp”匹配用户,多个用户之间也是用逗号分割
ChrootDirectory /data/ftp/%u
用chroot将用户的根目录指定到/data/ftp/%u,%u代表用户名,%h表示用户根目录
另一种写法: ChrootDirectory %h
ForceCommand internal-sftp
指定sftp命令
AllowTcpForwarding no
X11Forwarding no
禁止用户使用端口转发
建立用户和组

错误的目录权限设定会导致在log中出现”fatal: bad ownership or modes for chroot directory XXXXXX”的内容
目录的权限设定有两个要点:
1、由ChrootDirectory指定的目录开始一直往上到系统根目录为止的目录拥有者都只能是root
2、由ChrootDirectory指定的目录开始一直往上到系统根目录为止都不可以具有群组写入权限(最大权限755)
因为用了chroot,所以/data/sftp/xmuser1属主一定要是root,并且所属组不能有写入权限,如果上传需要写入在/data/sftp/user1下建立可写属主的文件夹供上传使用。


sftp的客户端配置
我使用的是xmanager的XFTP,Xmanager真的是很强大。
SFTP客户端配置
上传测试,看到我们的上传是OK的了。
sftp上传测试
那么最后一个环节就是,我们的sftp是ssh的一个部分。那么用户会不会登陆到系统中呢?这个必须来验证一下!
sftp登陆验证测试
好了,到现在我们的sftp就可以使用啦。

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: