Linux单个用户配置安装SFTP

本文详细指导如何在Linux系统中为sftp用户创建专用目录,配置sshd_config以限制权限,包括添加用户、组,设置Chroot和ForceCommand,确保数据安全。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

参考:https://www.cnblogs.com/bky185392793/p/7365809.html

一.添加用户和组

groupadd sftp
useradd -g sftp -s /sbin/nologin -M sftp
passwd sftp

-g:加入主要组 -s指定用户登入后所使用的shell -M:不要自动建立用户的登入目录,密码自己定

二,创建sftp用户活动的目录

(1)创建sftp用户的根目录和属主.属组,修改权限(755)

mkdir /data/
cd /data/
mkdir sftp
chown root:sftp sftp
chmod 755 /data/sftp/

(2)在sftp的目录中创建可写入的目录

cd sftp/
mkdir file
chown sftp:sftp file

三.修改sshd_config配置文件cd /etc/ssh/

cd /etc/ssh/
vim sshd_config
#Subsystem	sftp	/usr/libexec/openssh/sftp-server
Subsystem      sftp    internal-sftp
# Example of overriding settings on a per-user basis
Match User sftp
	X11Forwarding no
	AllowTcpForwarding no
#	PermitTTY no
	ForceCommand internal-sftp
        ChrootDirectory /data/sftp

把Subsystem sftp /usr/libexec/openssh/sftp-server注释
配置解释:

Subsystem sftp internal-sftp     #使用sftp服务使用系统自带的internal-sftp
Match Group sftp                 #匹配sftp组的用户,如果要匹配多个组,多个组之间用逗号分割
ChrootDirectory /data/sftp/%u    #用chroot将用户的根目录指定到/data/sftp/%u,%u代表用户名,这样用户就只能在/data/sftp/%u下活动
ForceCommand internal-sftp       #强制执行内部sftp,并忽略任何~/.ssh/rc文件中的命令
AllowTcpForwarding no            #不允许转发TCP协议,默认是yes,如果用户可以shell访问则建议为yes
X11Forwarding no                 #是否允许进行 X11 转发。默认值是"no",设为"yes"表示允许。如果允许X11转发并且sshd(8)代理的显示区被配置为在含有通配符的地址(X11UseLocalhost)上监听。那么将可能有额外的信息被泄漏。由于使用X11转发的可能带来的风险,此指令默认值为"no"。需要注意的是,禁止X11转发并不能禁止用户转发X11通信,因为用户可以安装他们自己的转发器。如果启用了 UseLogin ,那么X11转发将被自动禁止。

四.重启服务

# systemctl restart sshd

五.测试

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

### Linux SFTP 服务配置与使用 #### 配置 SSHSFTP 为了确保安全传输文件,在Linux环境中通常会通过SSH协议来实现SFTP功能。内部的`internal-sftp`子系统和独立运行的`sftp-server`程序提供了两种不同的方式用于处理SFTP请求[^1]。 对于希望限制用户仅能访问特定目录而不允许其执行其他shell命令的情况,推荐采用`internal-sftp`模式;而对于更复杂的场景,则可以选择外部的`sftp-server`作为替代方案。 #### 创建专用的 SFTP 用户组及账户 当需要为多个用户提供受限权限下的文件上传下载能力时,可以考虑建立专门的SFTP用户群体: ```bash groupadd sftpusers # 添加新的用户组名为sftpusers useradd -m -d /home/sftptest -G sftpusers -s /sbin/nologin sftptest # 新建用户名为sftptest并加入到sftpusers组中,指定家目录位置以及禁用交互式登录 passwd sftptest # 设置该用户的密码 ``` 上述操作创建了一个新用户,并将其分配给了一个特别设计用来容纳所有SFTP用户的群组里,同时指定了固定的主目录路径并且关闭了常规Shell环境的支持,从而增强了安全性[^5]。 #### 修改 SSHD_Config 文件以启用 Chroot Jail 功能 为了让这些特殊账号只能浏览自己所属的空间而无法越界探索整个文件系统结构,还需要进一步调整SSHD的服务端参数设置: 编辑位于/etc/ssh/sshd_config中的全局配置文档,追加或修改如下几项设定: ```plaintext Match Group sftpusers ChrootDirectory %h ForceCommand internal-sftp AllowTcpForwarding no X11Forwarding no ``` 此段落定义了一套针对成员属于`sftpusers`这个集合内的规则集,强制它们进入由变量%h代表的具体个人空间之下运作,并且启用了内置版本的SFTP引擎,同时也取消了一些不必要的转发特性选项。 完成编辑之后保存退出,并记得重启SSH守护进程以便让最新的改动立即生效: ```bash systemctl restart sshd # 对于System V init系统的发行版可能需要用service ssh restart代替 ``` 此时已经成功设置了基本的安全框架,使得任何隶属于预先规划好的用户列表里的个体都能够在限定条件下利用SFTP来进行远程数据交换活动[^2]。 #### 测试连接 最后一步就是验证一切是否正常工作。可以通过本地测试或者实际网络环境下尝试登陆目标机器上的SFTP站点来做初步检验: ```bash sftp username@server_ip # 将username替换为你之前设立的那个具体名字,把server_ip换成对应主机的真实地址 Password: # 输入对应的密码后如果顺利的话就能看到提示符变为'sftp>' ls # 列举当前所在位置的内容清单 put localfile # 上载单个文件上去 get remotefile # 下载远端资源下来 exit # 结束本次对话过程 ``` 一旦能够顺利完成这一系列指令调用流程即表明整个部署环节均无异常状况发生[^4]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值