用同一个用户登录宝塔面板的ftp与Linux的sftp

情况:

不是同一个用户,需要两个用户,一个来自宝塔面板,另一个是linux用户。Pure-FTPd 已经将用户从Linux系统中解耦了。

理由

Pure-FTPd,理论上最快。因为数据明文传输,没有加密解密的CPU开销,能最大程度利用网络带宽。但是不安全。用户名、密码和文件内容都以明文传输,在公网上极易被窃取。相对复杂。需要开放多个端口(默认21和20或动态端口),在防火墙和NAT环境下容易出问题。取决于客户端和服务器是否支持断点续传与恢复,协议本身不原生支持。

SFTP,相对较慢。CPU(尤其是性能较弱的设备)会成为瓶颈,因为所有数据都需要实时加密和解密。但是安全。所有数据通过SSH加密通道传输,能有效防止窃听和篡改。简单稳定。仅需一个端口(默认22),穿透防火墙容易,连接更稳定。协议原生支持断点续传与恢复,可以从中断处继续传输,对于200GB的文件非常关键。

总的来说,SFTP天生安全,无需额外配置。SFTP更省心。SFTP在对于200GB的文件场景下优势明显。

宝塔面板配置

先在宝塔面板中创建一个ftp用户,这没啥难度。

Linux配置

这个相对比较复杂。

bash 复制代码
# 创建系统用户 ftp(解决:Pure-FTPd 在启动时找不到系统用户 ftp,导致服务运行异常)
useradd -r -s /bin/false ftp

# 创建用户(bak135),指定家目录(/bak135/AutoBackUp),并禁止其登录shell(/usr/sbin/nologin)
useradd -d /bak135/AutoBackUp -s /usr/sbin/nologin bak135

# 设置用户密码
passwd bak135

# 创建一个组,比如叫 sftp_group
groupadd sftp_group

# 将 bak135 用户加入 sftp_group 组
groups bak135

# 将系统用户 bak135 加入 sftp_group
usermod -aG sftp_group www

#先查看 sftp_group 的 GID
getent group sftp_group
# 输出 sftp_group:x:1004:bak135

#修改虚拟用户 bak135 的 GID(上面的 1004)
/www/server/pure-ftpd/bin/pure-pw usermod bak135 -g 1004

# 修改后必须更新数据库
/www/server/pure-ftpd/bin/pure-pw mkdb

# 设置目录的组权限
chown -R :sftp_group /bak135/AutoBackUp

# 设置目录权限
chmod -R 775 /bak135/AutoBackUp
chmod g+s /bak135/AutoBackUp 

修改 SSH 配置

bash 复制代码
vi /etc/ssh/sshd_config
bash 复制代码
# 在文件末尾添加以下配置
Match User bak135
    ChrootDirectory /bak135
    ForceCommand internal-sftp -d /AutoBackUp
    AllowTcpForwarding no
    X11Forwarding no
    PasswordAuthentication yes
bash 复制代码
systemctl restart ssh
systemctl restart pure-ftpd
相关推荐
镜子AI6 小时前
镜子AI 技术复盘:三条自动化链路上的“停止条件“设计
运维·人工智能·自动化
tianyuanwo7 小时前
NetBox 数据库详解:当“关系型数据库”被装进一个网络运维的领域模型里
运维·数据库·netbox
HideF7 小时前
Linux sudo
linux
FlightYe7 小时前
视界原理之3D视频(四):裸眼、眼镜和头显
android·linux·c++·3d·ffmpeg·音视频
蹊黎8 小时前
Linux 下用 C 语言实现进度条
linux·c语言·单片机
知已难寻9 小时前
03 · OpenStack的计算管理 Nova
运维·服务器·开发语言·云原生·云计算·openstack·开源软件
huainingning10 小时前
Windows syslog日志服务器搭建与模拟器对接
运维·服务器·智能路由器
牛马鸡niumasi10 小时前
【Linux】C语言文件操作
linux
say_fall10 小时前
【Linux系统编程】Ext 文件系统:磁盘与存储、文件与目录、现代计算机究竟如何寻找文件
linux·运维·服务器·数据库·c++
wacsii10 小时前
【Linux进程(一)】Linux 进程初探:操作系统如何管理进程?fork() 为什么返回两次?
linux·运维·服务器