ant <scp> поддержка ssh-agent
У меня есть существующий файл 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. У меня есть ssh-агент, совместимый с Pageant: KeePass2/KeeAgent.
1 ответ
Не совсем то , что вы просили, но я решил мою похожую проблему (в плагине Maven Antrun на OS X), используя вместо этого задачу exec. Таким образом, вы можете использовать, например, что-то вроде этого, чтобы заменить то, что у вас есть:
<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