spring - SFTP上传文件权限被拒绝
问题描述
我正在尝试使用 SFTP 将 excel 文件从本地 Windows PC 上传到 linux 机器。
这是我的代码:
private void uploadToSftp() {
try
{
ChannelSftp sftpClient = null;
Channel channel = null;
JSch jsch = new JSch();
Session session = jsch.getSession("username", "host", 22);
session.setPassword("password");
Properties config = new Properties();
config.put("StrictHostKeyChecking","no");
session.setConfig(config);
session.connect();
channel = session.openChannel("sftp");
channel.connect();
sftpClient = (ChannelSftp) channel;
sftpClient.cd("/var/www/folder");
File localFile = new File("C:\\Workspace\\upload-file\\test.xlsx");
sftpClient.put(localFile.getAbsolutePath(),localFile.getName());
sftpClient.disconnect();
channel.disconnect();
session.disconnect();
} catch (JSchException e) {
e.printStackTrace();
} catch (SftpException e) {
e.printStackTrace();
}
}
但每次我运行这个应用程序我都会得到错误:
3: Permission denied
at com.jcraft.jsch.ChannelSftp.throwStatusError(ChannelSftp.java:2873)
at com.jcraft.jsch.ChannelSftp._put(ChannelSftp.java:594)
at com.jcraft.jsch.ChannelSftp.put(ChannelSftp.java:475)
at com.jcraft.jsch.ChannelSftp.put(ChannelSftp.java:365)
有谁知道可能是什么问题,我该如何解决?
解决方案
您似乎将本地文件“C:\Workspace\upload-file\test.xlsx”上传到 SFTP 上的远程目录“/var/www/folder”。
我猜您对本地文件(“C:\Workspace\upload-file\test.xlsx” )具有读取、写入、执行等所有权限,但您的远程文件夹“/var/www/folder”,可能不接受您的应用程序的访问,包括“上传”操作。
解决方案:
解决此问题的最简单方法是授予所有用户在您的上传目标目录(“/var/www/folder”)中执行任何操作的所有权限。请尝试使用此 linux 命令检查上传文件夹的权限。
ls -ld /var/www/folder
如果您看到您的/var/www/folder/目录不允许普通用户写入或读取(例如: drwxr -xr-x),请使用以下命令授予此文件夹的权限。
chmod 777 /var/www/folder
//check permission again.
ls -ld /var/www/folder
如果您可以检查目标文件夹的权限是否足够(drwxrwxrwx),请再次运行您的应用程序。
注意: 将所有权限授予其他用户并不是一个好的做法。请只执行此解决方案进行测试,稍后更改适合您的规范的权限设置。更多详情,请查看此链接(点击)。
推荐阅读
- python - 对于多类分类的 RNN 序列,我可以使用什么损失函数?
- sockets - 如何在不同网络的计算机之间传输文件?
- python-3.x - Django 在同一字段上注释和应用不同的聚合函数
- google-play - 无法理解 Google Play 上的应用审核流程
- ffmpeg - 带有concat的ffmpeg:复制一些,重新编码其他,即选择性重新编码
- php - foreach 语句导致多文件上传中未定义的变量 fileNameToStore
- laravel-8 - 想要使用谷歌客户端 api 库和谷歌在 laravel 8 中进行距离和步长的运行会话吗?
- python-3.x - 根据其他字段的值更改字段的值
- docker - Docker 容器 SSL 证书和主机名
- missing-data - 处理探索性因素分析的缺失数据