我想请你帮忙。当我的用户名包含@符号时,如何使用scp任务?
我试图在很多方面逃避角色,但它不起作用。在以下示例中,我的用户名是user@host.com
<scp file="test.txt" todir=""user@host.com":password@ftp.host.com:/" trust="true" sftp="true"/>
<scp file="test.txt" todir="'user@host.com':password@ftp.host.com:/" trust="true" sftp="true"/>
<scp file="test.txt" todir="user\@host.com:password@ftp.host.com:/" trust="true" sftp="true"/>
但输出总是一样的:
neither password nor keyfile for user "user has been given. Can't authenticate.
请问,是否有强制任务正确解析此字符串?非常感谢你。
顺便说一句,我不知道为什么,但是对于我当前的提供商,如果不附加主机名就无法创建用户名。
答案 0 :(得分:2)
我在build.xml中使用SCP任务,其形式如下:
<scp file="package/ROOT.war" todir="user@example.com:~" trust="true" password="${password}"/>
查看函数parseUri(String uri)
的{{3}}(第370行),看来该任务可以支持带@符号的用户名。限制似乎与路径中包含:或@,如此注释所示:
// user:password@host:/path notation
// everything upto the last @ before the last : is considered
// password. (so if the path contains an @ and a : it will not work)
代码似乎不支持此评论(正如指出的那样)
source of the SCP Task)。您还可以看到在密码或密钥文件丢失时触发的错误。也许user:password@host:/path
表示法中的密码和带@的用户名组合会导致问题?
答案 1 :(得分:-1)
当前ant版本-1.9.4
操作系统:-16.04 Ubuntu
无法正常工作。
更改为1.9.3
并指向/usr/bin/ant
ssh成功
观察:
16.04 and ant 1.9.3 is working
14.04 ant 1.9.4 is working