SFTP是SSH File Transfer Protocol的缩写,安全文件传送协议。SFTP与FTP有着几乎一样的语法和功能。SFTP为SSH的其中一部分,是一种传输档案至 Blogger 伺服器的安全方式。其实在SSH软件包中,已经包含了一个叫作SFTP的安全文件信息传输子系统,SFTP本身没有单独的守护进程,它必须使用sshd守护进程(端口号默认是22)来完成相应的连接和答复操作,所以从某种意义上来说,SFTP并不像一个服务器程序,而更像是一个客户端程序。
SFTP与FTP差别
只使用SFTP传输文件,不能使用ssh登录系统
创建sftp用户组
groupadd sftp-only
创建sftp用户
useradd -G sftp-only -d /home/sftp-user1 -s /sbin/nologin sftp-user1
将ChrootDirectory目录设置为/home(所有权必须为root),然后 ForceCommand 使用-d 选项将用户的主目录指定为起始目录
当前/home目录
$ ls -lhd /home/ /home/sftp-user1/
drwxr-xr-x. 3 root root 24 Apr 8 13:58 /home/
drwxr-xr-x 2 sftp-user1 sftp-only 62 Apr 8 14:14 /home/sftp-user1/
编辑/etc/ssh/sshd_config文件
#注释此行
#Subsystem sftp /usr/lib/openssh/sftp-server
#添加下面的内容
Subsystem sftp internal-sftp
#匹配sftp-only组,如果匹配用户,则用Match User User-Name
Match Group sftp-only
# 锁定目录 %h 用户家目录。%u用户名
ChrootDirectory /home/
# 禁止tcp转发。
AllowTCPForwarding no
# 禁止X11转发
X11Forwarding no
ForceCommand internal-sftp -d %u
使用SFTP客户端,上传文件
查看用户home目录
$ ll /home/sftp-user1/
total 180
-rw-r--r-- 1 sftp-user1 sftp-only 182092 Apr 8 14:29 1.jpg
嵌套主目录
创建目录并设置权限
mkdir /home/sftp-user1/sftp-user1
# 属主必须为root
chown root:sftp-only /home/sftp-user1
# 如果/home/sftp-user1权限必须为710,否则用户能够在/home/目录下浏览或创建文件
chmod 710 /home/sftp-user1
chown sftp-user1:sftp-only /home/sftp-user1/sftp-user1
# /home/sftp-user1/sftp-user1权限可设置700,755,777等
chmod 750 /home/sftp-user1/sftp-user1
查看当前的目录结构
$ ls -lhd /home/ /home/sftp-user1/ /home/sftp-user1/sftp-user1/
drwxr-xr-x. 3 root root 24 Apr 8 13:58 /home/
drwx--x--- 3 root sftp-only 80 Apr 8 14:32 /home/sftp-user1/
drwxr-x--- 2 sftp-user1 sftp-only 6 Apr 8 14:41 /home/sftp-user1/sftp-user1/
修改/etc/ssh/sshd_config文件
#注释此行
#Subsystem sftp /usr/lib/openssh/sftp-server
Subsystem sftp internal-sftp
# 匹配sftp-only组,如果匹配用户,则用Match User User-Name
Match Group sftp-only
# 锁定目录。为了能够chroot成功,该目录必须属主是root,并且其他用户或组不能写。%h 用户家目录。%u用户名
ChrootDirectory /home/%u
AllowTCPForwarding no
X11Forwarding no
ForceCommand internal-sftp -d %u
使用SFTP客户端上传文件
查看上传的文件位置
$ ll /home/sftp-user1/sftp-user1/
total 200
-rw-r--r-- 1 sftp-user1 sftp-only 200988 Apr 8 14:46 5.jpg
Subsystem sftp internal-sftp
Match Group sftp-only, Address *,!10.10.0.1
ChrootDirectory /home/%u
AllowTCPForwarding no
X11Forwarding no
ForceCommand internal-sftp -d %u
验证
从10.10.0.1机器登录
10.10.0.1机器能看到所有的目录
从其他主机登录
其他主机只能看到限定的目录
属于sftp-only用户组,但是不限制ssh及sftp
创建用户
useradd -G sftp-only test1
修改配置
Subsystem sftp internal-sftp
Match Group sftp-only User *,!test1 Address *
ChrootDirectory /home/%u
AllowTCPForwarding no
X11Forwarding no
ForceCommand internal-sftp -d %u
验证
ssh登录验证
# ssh test1@10.10.10.2
test1@10.10.10.2's password:
Last login: Thu Apr 8 16:13:46 2021 from 10.10.10.2
[test1@envir-05 ~]$
修改sshd配置
Subsystem sftp internal-sftp
Match Group sftp-only Address *
ChrootDirectory /home/%u
AllowTCPForwarding no
X11Forwarding no
ForceCommand internal-sftp -d %u -f AUTH -l INFO
修改 /etc/rsyslog.conf,在最后添加
auth,authpriv.*,local5.* /var/log/sftp.log
SFTP 命令
# 从服务器下载文件
get filename
# 上传文件到服务器
put filename
# 操作本地目录,在linux命令前添加 'l'
# 切换本地目录
lcd c:usersjieDesktop
# 显示本地目录路径
lpwd
页面更新:2024-04-03
本站资料均由网友自行发布提供,仅用于学习交流。如有版权问题,请与我联系,QQ:4156828
© CopyRight 2008-2024 All Rights Reserved. Powered By bs178.com 闽ICP备11008920号-3
闽公网安备35020302034844号