1

我想请你帮忙。当我的用户名包含 @ 符号时,如何使用 scp 任务?

我试图以多种方式逃避这个角色,但它不起作用。在以下示例中,我的用户名是 user@host.com

<scp file="test.txt" todir="&quot;user@host.com&quot;: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. 

请问,有没有强制任务正确解析这个字符串?非常感谢。

顺便说一句,我不知道为什么,但是对于我当前的提供商,如果不附加主机名就不可能创建用户名。

4

2 回答 2

2

我在 build.xml 中使用了 SCP 任务,它的形式如下所示:

<scp file="package/ROOT.war" todir="user@example.com:~" trust="true" password="${password}"/>

查看函数(第 370 行)处的 SCP 任务的来源,该任务parseUri(String uri)似乎可以支持带有 @ 符号的用户名。限制似乎是路径中包含 : 或 @ 的路径,如此评论所示:

// 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)

该代码似乎不支持此评论(如 马丁·克莱顿所指出的)。您还可以看到当密码或密钥文件丢失时触发的错误。也许user:password@host:/path符号中的密码和带有@的用户名的组合会导致问题?

于 2012-10-19T17:54:52.227 回答
-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
于 2018-12-03T06:27:27.433 回答