无法通过FTP将ASP.NET Core应用发布至Ubuntu 16.04远程服务器
解决ASP.NET Core FTP发布到Ubuntu 16.04的权限拒绝问题
你碰到的核心问题是FTP用户对远程服务器的目标目录没有写入/创建权限,所以Visual Studio在上传文件和创建var文件夹时被Ubuntu的权限系统拒绝了,返回550错误。下面是具体的解决步骤:
1. 确认FTP目标目录路径
首先通过SSH登录你的Ubuntu服务器,找到FTP用户对应的根目录:
- 如果用的是vsftpd,查看配置文件确认路径:
cat /etc/vsftpd.conf | grep local_root,输出的就是FTP用户登录后的默认目录(比如local_root=/var/www/my-aspnet-app) - 或者直接切换到FTP用户(如果允许登录Shell),执行
pwd查看当前目录
2. 修复目录权限和所有者
假设你的FTP用户名为ftpuser,目标目录是/var/www/my-aspnet-app,执行以下命令:
- 将目录及其子文件/文件夹的所有者改为FTP用户:
sudo chown -R ftpuser:ftpuser /var/www/my-aspnet-app - 设置目录权限,确保FTP用户有读写执行权限:
(755权限表示所有者有读写执行,组和其他用户有读执行,既安全又满足发布需求)sudo chmod -R 755 /var/www/my-aspnet-app
3. 检查FTP服务器配置(以vsftpd为例)
如果用的是vsftpd,需要确保配置允许写入:
- 打开配置文件:
sudo nano /etc/vsftpd.conf - 确认以下配置项:
write_enable=YES(必须开启,允许FTP写入操作)local_umask=022(设置上传文件的默认权限掩码,避免上传后权限不足)
- 重启vsftpd服务生效:
sudo systemctl restart vsftpd
4. 额外建议:更推荐的发布方式
其实对于ASP.NET Core应用发布到Ubuntu,SSH发布(Visual Studio原生支持)或者用dotnet publish生成发布包后通过SCP上传,比FTP更安全、稳定,也更少碰到权限问题。如果后续发布还遇到麻烦,可以尝试这种方式:
- 在Visual Studio发布选项中选择SSH,填写服务器IP、用户名密码,目标目录设置为你刚才配置好的路径即可。
内容的提问来源于stack exchange,提问作者GoBear
相关产品推荐
相关产品推荐

