在 Ubuntu 上搭建/提供 SFTP 服务,要兼容 Windows 客户端,一般不是“系统不兼容”,而是客户端、编码、权限、路径格式的问题。下面按常见场景说明怎么做。
Ubuntu 自带 openssh-server,Windows 可以直接用:
Win + R → cmdsftp user@ubuntu_ip
sftp://user@ubuntu_ip
✅ OpenSSH 的 SFTP 天然兼容 Windows
sudo systemctl status ssh
sudo systemctl enable ssh
sudo systemctl start ssh
sudo ufw allow 22
Windows 默认是 GBK / GB2312,Ubuntu 是 UTF-8
✅ 统一使用 UTF-8
Ubuntu 端确认:
locale
应为:
LANG=en_US.UTF-8
Windows 端:
下载:
https://winscp.net
站点管理 → 协议:SFTP
SFTP 对用户目录权限非常严格
sudo chown -R user:user /home/user
sudo chmod 755 /home/user
⚠️ 不要:
chmod 777 /home/user
会导致 SSH 拒绝登录
编辑:
sudo nano /etc/ssh/sshd_config
添加:
Match User sftpuser
ChrootDirectory /home/sftpuser
ForceCommand internal-sftp
AllowTcpForwarding no
重启:
sudo systemctl restart ssh
| Windows | Ubuntu SFTP |
|---|---|
C:\ |
/ |
\ |
/ |
| 盘符 | 无 |
Windows 客户端会自动转换,无需手动处理
Windows 需要:
Ubuntu 连接:
sftp user@windows_ip
Ubuntu 的 SFTP 本身完全兼容 Windows,关键是:用 OpenSSH + WinSCP + UTF-8 + 正确权限
如果你有具体场景(比如:只能读不能写、中文乱码、Chroot 失败),可以贴报错,我帮你精确解决。