我有一个现有的 build.properties 文件,它使用 scp 如下:
<scp todir="${linux.user}@${linux.site}:@{todir}" keyfile="${ssh.keyfile}" passphrase="${ssh.passphrase}" trust="yes" verbose="@{verbose}">
<filestocopy />
</scp>
该命令的文档在这里: https://ant.apache.org/manual/Tasks/scp.html
我想转到 ssh-agent 并取消密码。有些使用此功能的人已将他们的 ssh 配置为不使用密码并将密码留空。
另一种方法是使用http://www.jcraft.com/jsch-agent-proxy/但是我发现这个已有 1.5 年历史的问题表明它尚不受支持:
https://stackoverflow.com/questions/19684309/can-ant-using-ssh-encrypted-private-key-from-pageant
这在许多 ant 脚本中都有使用,所以我需要一个计划,让我能够使用 ssh-agent,同时仍然允许其他人继续使用他们的方法。
我在 Windows 7 上尝试将文件 scp 到 Linux。我有一个与 Pageant 兼容的 ssh 代理:KeePass2/KeeAgent。
答案1
不是确切地你所要求的,但我已经通过使用解决了类似的问题(在 OS X 上的 Maven Antrun 插件中)执行任务而是。因此,您可以使用例如类似这样的内容来替换您已有的内容:
<exec executable="pscp">
<arg value="dirtocopy"/>
<arg value="-r"/>
<arg value="-i"/>
<arg value="${ssh.keyfile}"/>
<arg value="${linux.user}@${linux.site}:@{todir}"/>
</exec>
当然,这不是理想的情况。为了实现跨平台支持,您需要每个人都安装 SCP 实现,并且需要条件来选择是scp
在 *nix 上pscp
还是在 Windows 上。
然而它也有一些优点 -ssh-agent
集成可以正常工作(按照您最初的要求),并且您可能不需要-i
我为了完整性而包含的参数。
警告:我还没有用PuTTY套件或Windows实际测试过这一点