python paramiko 在 windows 服务器上使用 sftp 时给出错误 "Permission denied [Errno 13]"
python paramiko giving error "Permission denied [Errno 13]" on windows server on using sftp
尝试在 paramiko 中使用 sftp 从 windows 服务器下载一些文件。获取方法是:
def get(self, remotepath, localpath = None):
"""Copies a file between the remote host and the local host."""
if not localpath:
localpath = os.path.split(remotepath)[1]
self._sftp_connect()
self._sftp.get(remotepath, localpath)
在 运行 上脚本为
sshObj.get('C:\my_file.txt', 'D:\python\')
,它抛出错误:
File "C:\Py34\lib\site-packages\paramiko\sftp_client.py", line 806, in _convert_status
raise IOError(errno.EACCES, text)`PermissionError: [Errno 13] **Permission denied**`
我已经授予了文件夹的所有权限。
还与其他用户分享了它。但错误仍然存在。如果有人以前遇到过这个问题,任何线索都会有所帮助。
注意:我安装了 freesshd 以使我的 localbox 成为 ssh 服务器。
因为您已经设置了 freesshd,所以您想要获取的文件应该位于您的 freesshd 服务的主目录中。我想远程路径应该是 /path/to/file
.
根据您的代码片段,您希望从 c:\my_file.txt
获取文件。至少有两个问题:
- POSIX-like文件系统使用
/
并且没有驱动器路径。 C:\
永远行不通。
- 您的 freessdh 可以访问
C:\
吗?我有疑问。
谢谢大家!
最后我找到了答案。
这是因为文件路径的格式。
尝试 sshObj.get("/remote_file.txt","C:/tmp/local_file.txt")
它成功了,没有任何错误。
下载winSCP工具,它有一个很好的GUI,可以帮助你正确理解文件路径的格式。
还要检查远程机器上的基本 SFTP 文件夹,因为在我的情况下,错误是因为 remote_file.txt
不在远程机器上的根 sftp 文件夹(可以手动配置)中。
这与路径命名约定无关。
在本地路径中,你没有提到文件名,你只是提到了保存文件的目录。
采用:
sshObj.get('C:\my_file.txt', 'D:\python\my_file.txt')
代替
sshObj.get('C:\my_file.txt', 'D:\python\')
尝试在 paramiko 中使用 sftp 从 windows 服务器下载一些文件。获取方法是:
def get(self, remotepath, localpath = None):
"""Copies a file between the remote host and the local host."""
if not localpath:
localpath = os.path.split(remotepath)[1]
self._sftp_connect()
self._sftp.get(remotepath, localpath)
在 运行 上脚本为
sshObj.get('C:\my_file.txt', 'D:\python\')
,它抛出错误:
File "C:\Py34\lib\site-packages\paramiko\sftp_client.py", line 806, in _convert_status
raise IOError(errno.EACCES, text)`PermissionError: [Errno 13] **Permission denied**`
我已经授予了文件夹的所有权限。 还与其他用户分享了它。但错误仍然存在。如果有人以前遇到过这个问题,任何线索都会有所帮助。
注意:我安装了 freesshd 以使我的 localbox 成为 ssh 服务器。
因为您已经设置了 freesshd,所以您想要获取的文件应该位于您的 freesshd 服务的主目录中。我想远程路径应该是 /path/to/file
.
根据您的代码片段,您希望从 c:\my_file.txt
获取文件。至少有两个问题:
- POSIX-like文件系统使用
/
并且没有驱动器路径。C:\
永远行不通。 - 您的 freessdh 可以访问
C:\
吗?我有疑问。
谢谢大家! 最后我找到了答案。 这是因为文件路径的格式。
尝试 sshObj.get("/remote_file.txt","C:/tmp/local_file.txt")
它成功了,没有任何错误。
下载winSCP工具,它有一个很好的GUI,可以帮助你正确理解文件路径的格式。
还要检查远程机器上的基本 SFTP 文件夹,因为在我的情况下,错误是因为 remote_file.txt
不在远程机器上的根 sftp 文件夹(可以手动配置)中。
这与路径命名约定无关。
在本地路径中,你没有提到文件名,你只是提到了保存文件的目录。
采用:
sshObj.get('C:\my_file.txt', 'D:\python\my_file.txt')
代替
sshObj.get('C:\my_file.txt', 'D:\python\')