【Linux服务器】-安装ftp与sftp服务

【Linux服务器】-安装ftp与sftp服务

FTP安装:

1. 安装vsftpd

下载安装vsftpd

复制代码
yum install vsftpd

启动vsftpd

复制代码
systemctl start vsftpd
systemctl enable vsftpd

2. 配置vsftpd

创建用户并修改密码

复制代码
useradd ftpuser
id ftpuser
echo "123$%^789" | passwd ftpuser --stdin

配置用户权限和访问位置

vim /etc/vsftpd/vsftpd.conf

复制代码
chroot_local_user=YES
chroot_list_enable=YES 
chroot_list_file=/etc/vsftpd/chroot_list
allow_writeable_chroot=YES
local_root=/data/ftp/python

创建chroot_list名单

vim /etc/vsftpd/chroot_list

创建/data/ftp/python目录并赋权

复制代码
mkdir -p /data/ftp/python
chmod 777 /data/ftp/python

重启vsftpd

复制代码
systemctl restart vsftpd
systemctl status vsftpd

3.验证ftp


SFTP安装:

1. 修改配置项

vim /etc/ssh/sshd_config

确保以下配置在且未被注释掉

复制代码
Subsystem sftp /usr/lib/openssh/sftp-server
复制代码
Match Group sftpusers
    ChrootDirectory /home/%u
    ForceCommand internal-sftp
    AllowTcpForwarding no
    X11Forwarding no


ChrootDirectory /home/%u

将用户的根目录(chroot)限制在其自身的家目录(/home/用户名)中。

%u 是一个占位符,会自动替换为当前登录的用户名,确保每个用户只能访问自己的家目录,无法切换到系统其他目录(如 /etc、/usr 等),增强安全性。
ForceCommand internal-sftp

强制该用户组的用户只能使用 SSH 内置的 internal-sftp 服务,禁止执行普通的 SSH shell 登录(如通过 ssh 命令进入终端)。

确保用户仅能进行文件传输操作,无法执行系统命令。
AllowTcpForwarding no

禁用 TCP 端口转发功能,防止用户通过 SFTP 隧道绕过限制访问其他服务,进一步限制网络操作权限。
X11Forwarding no

禁用 X11 图形转发功能,由于该用户组仅允许 SFTP,无需图形界面相关功能,关闭后减少潜在安全风险。

创建用户并修改密码

复制代码
groupadd sftpusers
useradd -m -s /bin/false -g sftpusers sftpuser
echo "123$%^789" | passwd sftpuser --stdin


useradd

Linux 系统中用于创建新用户的命令(部分系统可能使用 adduser,功能类似)。
-m

自动创建用户的家目录(通常为 /home/sftpuser),并复制 /etc/skel 目录下的默认配置文件(如 .bashrc、.profile 等)。
-s /bin/false

设置用户的登录 shell 为 /bin/false(或 /sbin/nologin),这是一个特殊的 shell,当用户尝试直接登录时会立即退出,从而禁止 SSH 交互式登录。

但该用户仍可通过 SFTP 访问,因为 SFTP 不需要交互式 shell。
-g sftpusers

将用户添加到 sftpusers 用户组,该组应已在 SSH 配置中被限制为仅能使用 SFTP(参考你之前提供的 Match Group sftpusers 配置)。
sftpuser

指定用户名,可根据需要替换为实际名称(如 upload_user、client1 等)。

配置文件目录

复制代码
mkdir -p /home/sftpuser
chown root:root /home/sftpuser
chmod 755 /home/sftpuser
复制代码
mkdir -p /home/sftpuser/upload
chown sftpuser:sftpusers /home/sftpuser/upload

2. 重启ssh服务

复制代码
systemctl restart sshd

3. 验证访问



相关推荐
剑神一笑4 小时前
Linux pgrep 命令详解:按名称查找进程 PID 的高效方法
linux·运维·chrome
Lumbrologist4 小时前
【零基础部署】Docker 部署 CrewAI 多 Agent 编排框架保姆级教程
运维·docker·容器
yyuuuzz4 小时前
独立站的技术基础与常见运维问题
大数据·运维·服务器·网络·数据库·aws
剑神一笑4 小时前
Linux killall 命令详解:按进程名批量终止进程的原理与实践
linux·运维·chrome
雅菲奥朗4 小时前
企业级 AI 自动化|OpenClaw 龙虾实战与认证
运维·人工智能·自动化·openclaw
江华森6 小时前
Ansible 自动化运维:从入门到实战
运维·自动化·ansible
宋浮檀s8 小时前
应急响应——Web漏洞:命令执行+SSRF+弱口令
运维·数据库·sql·网络安全·oracle·应急响应
日取其半万世不竭8 小时前
iftop、nethogs 和 nload:Linux 服务器网络流量实时监控工具介绍
linux·运维·服务器
mounter6259 小时前
Linux 内核资源管理:控制组(cgroup)的演进与“策略组”新提案
linux·运维·服务器·cgroup·kernel
bksczm9 小时前
文件在磁盘中的存储方式
linux·运维·服务器