首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >lftp 550权限被拒绝

lftp 550权限被拒绝
EN

Stack Overflow用户
提问于 2018-07-06 06:03:16
回答 3查看 6.9K关注 0票数 2

我已经尝试创建一个脚本,它将使用lftp上传一些文件到ftp服务器,但到目前为止还没有任何运气。如果我在debian中使用了build in ftp命令,我可以成功地连接并放入文件。以下是lftp命令的调试输出:

代码语言:javascript
复制
lftp xxx.xxx.xxx.xxxx -e "put -O /out/ some_file_name" -d
---- using user `user01' and password from ~/.netrc
---- Resolving host address...
---- 1 address found:xxx.xxx.xxx.xxxx
---- Connecting to xxx.xxx.xxx.xxxx (xxx.xxx.xxx.xxxx) port 21
<--- 220 (vsFTPd 2.0.7)                                         
---> FEAT
<--- 211-Features:                                                    
<---  EPRT
<---  EPSV
<---  MDTM
<---  PASV
<---  REST STREAM
<---  SIZE
<---  TVFS
<---  UTF8
<--- 211 End
---> OPTS UTF8 ON
<--- 200 Always in UTF8 mode.                                   
---> USER user01
<--- 331 Please specify the password.                           
---> PASS XXXX
<--- 230 Login successful.                                            
---> PWD
<--- 257 "/"                                                              
---> TYPE I
<--- 200 Switching to Binary mode.                                        
---> EPSV
<--- 550 Permission denied.                                               
---- Switching passive mode off
---- Closing data socket
---- Closing control socket

如您所见,我使用的是.netrc文件中存储的用户名和密码。我有另一个脚本连接到相同的服务器,但上传文件,并使用lftp再次在远程ftp文件夹中重命名它们。有没有人能帮我解释一下为什么我不能使用lfpt,但可以使用ftp。

EN

回答 3

Stack Overflow用户

发布于 2018-07-06 14:31:48

set ftp:passive-mode trueset ftp:prefer-epsv false添加到/etc/lftp.conf后,错误被更改

代码语言:javascript
复制
<--- 230 Login successful.                                            
---> PWD
<--- 257 "/"                                                              
---> TYPE I
<--- 200 Switching to Binary mode.                                        
---> PASV
<--- 227 Entering Passive Mode (xxx.xxx.xxx.xxx,76,92)                      
---- Connecting data socket to (xxx.xxx.xxx.xxx) port 19548
---- Data connection established                                            
---> ALLO 710
<--- 550 Permission denied.                                               
---> STOR out/my_file_name
---> ABOR
put: Access failed: 550 Permission denied. (/out/my_file_name)
---- Closing aborted data socket
---- Closing control socket

好的,我已经明白了ALLO的意思

可以将ALLO命令发送到服务器,该服务器需要在传输发生之前为上传的数据保留必要的空间

所以,在ftp手册页中快速搜索之后,我找到了一个关闭它的命令。在添加了set ftp:use-allo falseepsv false之后,现在一切都很好。非常感谢:)

票数 2
EN

Stack Overflow用户

发布于 2019-01-09 14:29:07

lftp -e "set ftp:use-allo false; set ftp:passive-mode true; set ftp:prefer-epsv false; mirror -R {local dir} {remote dir}" -u {username},{password} {host}

使用这一命令将文件从本地同步到服务器,而不会出现550权限错误。

票数 2
EN

Stack Overflow用户

发布于 2018-07-06 12:39:04

虽然550 Permission denied.是对EPSV命令的奇怪响应,但它意味着服务器或介于两者之间的某个中间盒不理解EPSV命令(很可能是中间盒,因为对FEAT的响应显示EPSV受支持)。如果您使用内置的ftp命令而不是lftp,它可能会使用较旧的PASV命令(仅限IPv4),而不是较新的EPSV命令(支持IPv4+IPv6)。

根据the man page的说法,有一个默认设置为false的设置ftp:prefer-epsv。也许某些配置将此值设置为true,以便lftp使用EPSV而不是PASV。检查您的设置(lftp中的set -a),如果是真的(期望的),将其设置为false,然后重试,希望它会使用PASV而不是EPSV

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51200477

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档