欢迎光临濮阳市分类吧
详情描述

核心思路

SFTP(SSH File Transfer Protocol)是SSH服务的一部分,因此我们通常通过配置SSH服务(OpenSSH)来提供SFTP功能,而不是搭建独立的FTP服务器。这种方式更安全、更简单。

本教程以最常用的 Linux系统(如Ubuntu/CentOS) 为例。如果您使用Windows,可以考虑使用FreeSSHdBitvise SSH Server等软件,但Linux是更主流和推荐的选择。

方案一:使用系统自带OpenSSH(推荐)

这是最安全、最直接的方法,利用了操作系统已有的SSH服务。

步骤1:安装SSH服务器(如果尚未安装)
# Ubuntu/Debian
sudo apt update
sudo apt install openssh-server

# CentOS/RHEL/Fedora
sudo yum install openssh-server
# 或使用 dnf (新版本Fedora/CentOS)
sudo dnf install openssh-server

安装后,SSH服务通常会自动启动。您可以使用 sudo systemctl status ssh (Ubuntu)或 sudo systemctl status sshd (CentOS)来检查状态。

步骤2:创建专用的SFTP用户和目录(为了安全和权限隔离)

我们不建议直接使用root用户进行SFTP。

创建用户组(可选,用于管理多个SFTP用户):

sudo groupadd sftpusers

创建用户并设置密码,同时将其主目录设置为指定目录(例如 /data/sftp/user1):

# 创建用户,并加入到sftpusers组,禁止其SSH登录shell(仅能SFTP)
sudo useradd -m -G sftpusers -s /usr/sbin/nologin user1
# 设置用户密码
sudo passwd user1
  • -m:创建用户主目录(在 /home/user1)。
  • -G sftpusers:将用户添加到 sftpusers 组。
  • -s /usr/sbin/nologin:禁止该用户使用SSH登录获得Shell终端,只能进行文件传输,更安全。

创建并设置SFTP根目录(如果需要将所有用户文件集中管理):

# 创建一个总的SFTP根目录,例如 /data/sftp
sudo mkdir -p /data/sftp
# 将根目录的所有者设为root,并确保其他用户无写权限
sudo chown root:root /data/sftp
sudo chmod 755 /data/sftp

# 为用户创建其专属子目录
sudo mkdir -p /data/sftp/user1
# 将用户目录的所有者赋予该用户
sudo chown user1:sftpusers /data/sftp/user1
sudo chmod 755 /data/sftp/user1
# 注意:用户对其主目录需要有写权限,通常会在其目录下创建upload等子目录
sudo mkdir -p /data/sftp/user1/upload
sudo chown user1:sftpusers /data/sftp/user1/upload
步骤3:配置SSH以启用SFTP并限制用户访问

编辑SSH服务的主配置文件 /etc/ssh/sshd_config

sudo nano /etc/ssh/sshd_config

找到或添加以下配置行:

# 确保Subsystem sftp这行是启用的(通常默认已存在)
Subsystem sftp internal-sftp

# 在文件末尾添加以下配置块,用于限制sftpusers组的用户
Match Group sftpusers
    # 强制使用SFTP协议,并指定其根目录为 /data/sftp
    ChrootDirectory /data/sftp
    # 允许以下功能
    ForceCommand internal-sftp
    # 禁用端口转发等TCP功能,增强安全性
    PermitTunnel no
    AllowTcpForwarding no
    X11Forwarding no
  • ChrootDirectory /data/sftp: 这是最关键的安全设置。它将用户的活动范围“禁锢”在/data/sftp目录下,用户无法访问该目录以外的任何系统文件。该目录及其所有上级目录的所有者必须是root,且权限不能有群组写入(例如755)。
步骤4:重启SSH服务使配置生效
# Ubuntu/Debian
sudo systemctl restart ssh

# CentOS/RHEL
sudo systemctl restart sshd
步骤5:测试连接

使用任意SFTP客户端(如FileZilla, WinSCP, 或命令行sftp)进行连接。

  • 主机: 您的内网服务器IP地址(如 192.168.1.100
  • 端口: 22(默认SSH端口)
  • 用户名user1
  • 密码: 您设置的密码
  • 协议: SFTP

在FileZilla中,连接设置如下:

协议: SFTP - SSH File Transfer Protocol
主机: 192.168.1.100
端口: 22
登录类型: 正常
用户: user1
密码: *******

方案二:使用更易管理的第三方软件(如vsftpd + SSL)

如果您需要更复杂的FTP功能(如匿名访问、纯FTP协议),并为其加上SSL层来模拟SFTP的安全性,可以考虑此方案。但OpenSSH方案通常更简单安全

这里简要介绍使用 vsftpd 配置支持SSL加密的FTPS(注意:不是SFTP,但同样安全)。

安装vsftpd

sudo apt install vsftpd  # Ubuntu
sudo yum install vsftpd   # CentOS

生成SSL证书

sudo openssl req -x509 -nodes -days 365 -newkey rsa:2048 \
  -keyout /etc/ssl/private/vsftpd.pem -out /etc/ssl/private/vsftpd.pem

配置vsftpd (/etc/vsftpd.conf):

# 禁用匿名登录
anonymous_enable=NO
# 允许本地用户登录
local_enable=YES
# 启用写操作
write_enable=YES
# 启用SSL
ssl_enable=YES
# 强制所有连接使用SSL
force_local_data_ssl=YES
force_local_logins_ssl=YES
# 指定证书路径
rsa_cert_file=/etc/ssl/private/vsftpd.pem
rsa_private_key_file=/etc/ssl/private/vsftpd.pem

重启服务

sudo systemctl restart vsftpd

连接: 客户端需要使用FTPS (Explicit)协议连接。

内网访问与防火墙设置

  • 内网IP: 确保您使用服务器的内网IP地址(如192.168.x.x10.x.x.x172.16.x.x)进行连接。

  • 防火墙: 如果服务器启用了防火墙(如ufwfirewalld),需要放行SSH端口(默认为22)。

    # Ubuntu ufw
    sudo ufw allow 22/tcp
    
    # CentOS firewalld
    sudo firewall-cmd --permanent --add-service=ssh
    sudo firewall-cmd --reload

安全建议

使用密钥认证: 比密码更安全。将客户端的公钥(id_rsa.pub)添加到服务器的 ~/.ssh/authorized_keys 文件中。 修改默认端口: 在 /etc/ssh/sshd_config 中修改 Port 项,可以减少自动化攻击。 禁用root登录: 在 /etc/ssh/sshd_config 中设置 PermitRootLogin no定期更新: 保持系统和OpenSSH软件包更新。 监控日志: 查看 /var/log/auth.log(Ubuntu)或 /var/log/secure(CentOS)来监控登录尝试。

总结

对于绝大多数内网SFTP需求,直接使用OpenSSH(方案一)并进行适当的用户和Chroot配置是最佳选择。它无需安装额外软件,安全性高,配置也相对简单。完成上述步骤后,您就拥有了一个安全可靠的内网SFTP服务器。

相关帖子
濮阳市工商异常解除代办-个体户注册营业执照,全程代办,快速办理
濮阳市工商异常解除代办-个体户注册营业执照,全程代办,快速办理
如何平衡全职工作与继续教育学习的时间,有哪些高效的时间管理方法?
如何平衡全职工作与继续教育学习的时间,有哪些高效的时间管理方法?
快递驿站或代收点在集中处理大量面单时,如何管理其中的个人信息?
快递驿站或代收点在集中处理大量面单时,如何管理其中的个人信息?
濮阳市120救护车跨省转院,长途120急救车租赁,24小时在线电话
濮阳市120救护车跨省转院,长途120急救车租赁,24小时在线电话
对于带饭的上班族,如何准备隔夜便当才能兼顾营养与安全?
对于带饭的上班族,如何准备隔夜便当才能兼顾营养与安全?
宁德市120救护车电话号码,重症急救车出租,转院接送
宁德市120救护车电话号码,重症急救车出租,转院接送
长治市SEO推广#专业网站建设服务,多年专业建站经验
长治市SEO推广#专业网站建设服务,多年专业建站经验
北海市ISO22000食品安全管理体系认证|企业注册,全程代办
北海市ISO22000食品安全管理体系认证|企业注册,全程代办
琼海市代办资质许可证-中小微企业注册,24小时在线,欢迎电话咨询
琼海市代办资质许可证-中小微企业注册,24小时在线,欢迎电话咨询
唐山市殡葬服务公司办理-白事服务,摆灵堂
唐山市殡葬服务公司办理-白事服务,摆灵堂
除了法律追责,被害人还有哪些方式可以寻求物质损失方面的合理弥补?
除了法律追责,被害人还有哪些方式可以寻求物质损失方面的合理弥补?
西宁市网站开发|高效获客渠道,收费标准
西宁市网站开发|高效获客渠道,收费标准
三明市正规120长途救护车出租,出租120救护车
三明市正规120长途救护车出租,出租120救护车
武威市ICP/EDI经营许可证代办|专业注册公司代办,正规代办公司
武威市ICP/EDI经营许可证代办|专业注册公司代办,正规代办公司
面对无人配送车占道引发的交通事故,责任应由运营方还是技术方承担?
面对无人配送车占道引发的交通事故,责任应由运营方还是技术方承担?
保障性租赁住房的房源是如何被认定和筹集的,有哪些主要方式?
保障性租赁住房的房源是如何被认定和筹集的,有哪些主要方式?
大同市殡葬服务电话-办理白事服务,定告别厅
大同市殡葬服务电话-办理白事服务,定告别厅
惠州市120救护车出租护送病人转院,120救护车出租收费多少钱
惠州市120救护车出租护送病人转院,120救护车出租收费多少钱
在解决复杂问题时,左右脑是如何分工合作,最终形成创造性解决方案的?
在解决复杂问题时,左右脑是如何分工合作,最终形成创造性解决方案的?