当前位置: 首页 > news >正文

Ubuntu 下配置 SFTP 服务并实现安全数据共享

1. 需求

先说一下笔者的需求:实现 Ubuntu 系统机器与其他机器的数据共享,尤其是让 Ubuntu 系统下的某个目录镜像到 Windows 本地环境中。

2. 协议

除了安装现成的软件,一种比较好的方案是基于 Ubuntu 系统本身来搭建 SFTP 服务。SFTP(SSH File Transfer Protocol)是一种通过 SSH 加密通道安全传输文件的网络协议,是运维人员的首选文件传输方式。SFTP 是 SSH 协议的一个子系统,必须先建立 SSH 连接才能使用 SFTP。

SSH(Secure Shell)提供安全的远程登录和命令执行,可作为其他协议的安全隧道。

3. 操作

笔者的目的是将 /home/ubuntu/data 这个目录共享出去。

3.1 配置

安装并运行 SSH :

sudo apt update
sudo apt install openssh-server -y
sudo systemctl enable --now ssh

创建专用 SFTP 用户,使用禁止用户通过 SSH 登录到交互式终端的 shell:

# 创建用户,禁止 shell 登录,主目录设为 /home/ubuntu/data
sudo useradd -d /home/ubuntu/data -s /usr/sbin/nologin sftpuser# 设置密码(客户端连接时用)
sudo passwd sftpuser

设置目录权限,SFTP 的 chroot 要求 chroot 目录必须由 root 拥有且不可写,但子目录可以给用户写:

# 创建父目录作为 chroot 根(必须 root 所有)
sudo mkdir -p /sftp/sftpuser# chroot 根目录必须是 root:root 且 755
sudo chown root:root /sftp/sftpuser
sudo chmod 755 /sftp/sftpuser

假设我们想要共享的目录就是 /home/ubuntu/data :

# 软链接
sudo ln -s /home/ubuntu/data /sftp/sftpuser/upload# 子目录(upload)归 sftpuser 所有,可读写
sudo chown sftpuser:sftpuser /sftp/sftpuser/upload
sudo chmod 755 /sftp/sftpuser/upload

配置 SSH 支持 SFTP chroot,在 /etc/ssh/sshd_config 文件末尾添加以下内容:

Match User sftpuserChrootDirectory /sftp/sftpuserForceCommand internal-sftpAllowTcpForwarding noX11Forwarding noPermitTunnel no

表示当用户是 sftpuser 时,将其限制在 /sftp/sftpuser 目录中,且只能使用 SFTP。

最后重启 SSH 服务:

sudo systemctl restart ssh

3.2 测试

如果在 Windows 下测试是否能访问远端 Ubuntu 的 SFTP 服务,可以直接使用 PowerShell ,因为现在主流的 Windows 10/11 已经内置可 OpenSSH 客户端:

sftp sftpuser@Ubuntu-IP

输入密码后就可以进入 sftp> 提示符。不过笔者在进入 upload 目录的时候失败了:

sftp> dir
upload
sftp> cd upload
realpath /upload: No such file

这是因为笔者前面设置的路径 /sftp/sftpuser/upload 是一个软链接,而 OpenSSH 的 internal-sftp 在 chroot 环境中默认不解析软链接。为了保证通用性,这里还是换成 bind mount 的方式。

删除原来的软链接:

sudo rm -f /sftp/sftpuser/upload

创建一个普通目录作为挂载点:

sudo mkdir /sftp/sftpuser/upload

使用 bind mount 将真实 data 目录挂载进去:

sudo mount --bind /home/ubuntu/data /sftp/sftpuser/upload

设置权限,确保 sftpuser 可读写:

sudo chown sftpuser:sftpuser /sftp/sftpuser/upload
# 注意:bind mount 后权限继承原目录,所以也要检查源目录
sudo chown sftpuser:sftpuser /home/ubuntu/data

如果需要设置开机自动挂载,可以在 /etc/fstab 中添加一行:

/home/ubuntu/data /sftp/sftpuser/upload none bind 0 0

重启 SSH :

sudo systemctl restart ssh

再次进行测试:

sftp sftpuser@Ubuntu-IP

3.3 镜像

Windows下有非常多的客户端可以连接 SFTP 服务并且实现文件操作,比如 WinSCP、FileZilla 等等。不过笔者的目的是将 /home/ubuntu/data 这个文件的数据镜像下来,并且定期同步。因此笔者使用的是 FreeFileSync 这款开源软件。FreeFileSync 是专门用来文件夹比较和同步的,也可以支持 SFTP 服务。

设置 SFTP 服务参数:
图1:FreeFileSync 设置 SFTP 服务参数

进行文件比较和镜像同步:
图2:FreeFileSync 文件比较和同步

另外 FreeFileSync 还提供了一个 RealTimeSync 工具,进行设置后可以实时同步文件夹。其实这个功能差不多就是一些网盘提供的文件同步功能了,非常实用。

http://www.jsqmd.com/news/135379/

相关文章:

  • 屹晶微 EG2106D 600V耐压、半桥MOS/IGBT驱动芯片技术解析
  • 【工具】OpenScreen 完整使用教程
  • 2025最新!专科生毕业论文必备9大AI论文平台测评
  • 别再手动熬文献综述!7款AI工具一键生成+真实文献交叉引用
  • 懒加载示例
  • AI辅助论文写作平台排名:9款工具实测,开题到降重全覆盖
  • 2025银川最新家电维修家政服务公司 TOP5 评测!兴庆、金凤、西夏、贺兰县等地区家庭生活服务团队权威榜单发布,专业高效解决家务难题 - 全局中转站
  • 2025银川最新家政保洁中心top5推荐!兴庆区、金凤区、西夏区、贺兰县等地区一站式家庭服务企业权威榜单发布,专业高效赋能品质生活 - 全局中转站
  • PySpark和PyFlink如何写Hive表?
  • 2025 MBA必看!9个AI论文软件测评:开题报告与文献综述全攻略
  • AI论文写作工具测评:9款实测推荐,开题报告与降重功能全面解析
  • P9482 [NOI2023] 字符串
  • 2025年气动单轨吊供应商市场占有率排名发布,20吨气动葫芦/手拉式气动葫芦/矿山气动葫芦/气动葫芦气动单轨吊供货厂家怎么选择 - 品牌推荐师
  • 大模型与传统AI的代际差异及大小协同的未来
  • Prodigy-HF 工具发布:NER训练与数据上传功能
  • 实用指南:【保姆级教程】apache-tomcat的安装配置教程
  • 《沉思》-摘
  • 从识别到深耕:鲸鸿动能在鸿蒙生态下的游戏用户价值增长实践
  • PySpark和PyFlink如何读取Hive中的表?
  • 项目复审
  • 【计算机毕业设计案例】基于Java springboot滑雪场售票系统基于springboot的滑雪售票系统设计与实现(程序+文档+讲解+定制)
  • 英语_阅读_curiosity is the key to discovery_待读
  • RS232 串口透传 IP 组网配置
  • 事后分析
  • [CSP-S 2025] 员工招聘
  • Azure DevOps Server 正式版本发布
  • Java 类加载
  • 11574_springboot学生宿舍信息的系统(11574)
  • 基于S7-200 PLC与组态王的机械手自动化搬运控制策略
  • 《智慧书》