Linux系统下SFTP命令详解

温馨提示:本文最后更新于2023-10-24 21:14:02,某些文章具有时效性,若有错误或已失效,请在文末留言。

SFTP(Secure File Transfer Protocol,安全文件传输协议)是一种基于可靠数据流(data stream),提供文件存取和管理的网络传输协议。

与 FTP 协议相比,SFTP 在客户端与服务器间提供了一种更为安全的文件传输方式,如果你还在使用 FTP 来进行文件传输,强烈建议切换到更为安全的 SFTP 上来。

创建用户

Linux系统中创建用户命令:

useradd -d /server/data -m test

说明:
-d /server/data 是设置改用户的默认目录,这里设置后面当作是该用户sftp访问时的根目录就是这个
-m test 表示创建的用户账号为test

PS:这个方式不需要创建用户组,按照用户组的方式尝试之后,总是有点问题,不是目录权限问题造成的无法连接就是对指定目录的操作不对。如果在添加用户时提示没有权限或者用户已存在?请看文章最后面的解释。

设置密码

SFTP用户设置密码命令:

passwd test

说明:
test 表示设置test用户密码
● 如果不允许该用户通过ssh登录服务器,使用命令:usermod -s /sbin/nologin test
● 恢复该用户可以通过ssh登录服务器:usermod -s /sbin/bash test

创建权限目录

创建上面创建用户时指定的默认目录:

mkdir -p /server/data

SFTP配置

使用Linux自带的SFTP,修改SFTP配置文件:

vi /etc/ssh/sshd_config

①将 Subsystem sftp /usr/libexec/openssh/sftp-server 这一行注释掉,不然修改后会启动不了sshd服务,在行前添加 # 符号即可,如下图
②增加用户的SFTP目录和访问配置,在文件末尾添加以下内容:

Match user test
X11Forwarding no
AllowTcpForwarding no
ForceCommand internal-sftp
ChrootDirectory /server/data

说明:
● Match user test 指定账号
● AllowTcpForwarding 指定不能ssh登录
● ChrootDirectory 指定该账户的根目录

若test用户归属于sftpusers用户组,也可以修改成以下格式:

Subsystem sftp internal-sftp
Match Group sftpusers
ChrootDirectory %h
ForceCommand internal-sftp
X11Forwarding no
AllowTcpForwarding no

说明:
● Match Group sftpusers 指定sftpusers用户组
● AllowTcpForwarding 指定不能ssh登录
● ChrootDirectory %h 限定访问目录,每个SFTP用户将被限制在其自己的家目录中,而无法访问其他系统文件或目录

刷新配置

重启SSH服务让sshd_config配置生效,命令:

systemctl restart sshd.service

或者:

service ssh restart

创建子目录

这个子目录是SFTP用户访问之后看到的目录,命令:

mkdir /server/data/test

权限配置

这一步的权限需要配置好,否则SFTP会出现连接不上的问题:Connection reset by peer

1、必须指定上层目录为root所属,并且设置755权限

chown root /server/data
chmod 755 /server/data

说明:/server/data 的目录所属需要是root才可以

2、设置子目录的权限为当前创建的用户,然后才有读写权限

chown test /server/data/test
chmod 755 /server/data/test

注意:如果下面创建的子目录还是没有权限,那么还需要加上下面的步骤:

cd /server/data/
chown -R test test/
chmod -R 755 test/

这样,创建出来的子目录就都可以上传下载

总结

上面的操作完成后,就已经配置好一个用户了,并且设置了对应的权限目录,其他的用户,重复上面的操作步骤,并修改用户名和目录即可。可以通过sftp客户端或者命令行访问进行测试!

问题解决

1、在Linux下用useradd添加用户时,出现错误:Creating mailbox file: 文件已存在?

原因:原来Linux系统下添加用户后,会在系统里自动加一个系统邮箱,路径是:/var/spool/mail/用户名,可以直接用命令:rm -rf /var/spool/mail/用户名 去删除用户,然后执行命令:userdel 用户名 就可以再次重新添加用户。

2、root用户在创建用户时提示没有权限?
原因:由于 su root 或者 sudo su 命令只改变root权限不改变环境变量,而 su -root 指令可以取得ROOT用户的权限和环境。所以需要再执行一次 su -root 命令即可解决。

在CentOS系统上安装SFTP服务器-十一张
✅来源:十一张博客
© 版权声明
THE END
如果觉得这篇文章对您有帮助,可以收藏本网址,方便下次访问!
点赞4 分享
评论 抢沙发

请登录后发表评论

    暂无评论内容