使用密码的ant脚本通过SSH进行Rsync

我有一台虚拟机在我的开发人员机器上运行,我需要通过SSH通过ant构建脚本将rsync文件传输到它,以“部署”。 在生产中,安全是一个问题,但我真的不关心在与本地计算机上的开发虚拟机进行通信时的安全SSH实践。

我可以创建一个证书并将其安装在我的SSH密钥中,但这有点令人讨厌。 我宁愿只是通过蚂蚁脚本将密码发送到rsync,并将其称为一天。

(编辑 - 如果没有一个例子,如果你真的不能处理这个问题,让我们假设这个服务器不在我的控制之下,他们的恶意系统管理员拒绝让我用任何理由登录SSH密钥。人!)

有没有办法在非交互模式下调用SSH或更具体的rsync,而无需编辑你的ssh配置? 换句话说,只需提供密码?


我碰巧已经想出了一个解决方案,但它不是很容易,所以我想分享它。

基本上,我使用了一个名为“expect”的命令行程序来将我的密码填充到rsync的交互模式中。 我也不想把它写成脚本,所以我把它压缩成一个单一的命令。 这也适用于ssh以及rsync,如果你出于某种原因需要这些。

也许有更好的方法,但这似乎工作正常。

192.168.64.131显然是我本地虚拟机的IP地址。 用您的ssh登录名和密码替换login_name和login_password。

expect -c 'spawn rsync -avz -e ssh ./ login_name@192.168.64.131:/var/www/auth/; expect "*?assword:*" {send "login_passwordr"; interact};'

使用SSH密钥更容易,更安全。 以下答案给出了一个例子:

  • 蚂蚁,从远程机器下载文件集
  • 链接地址: http://www.djcxy.com/p/60043.html

    上一篇: Rsync over SSH from an ant script with a password

    下一篇: rsync files as user using ssh key