2

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

我本可以创建一个证书并将其安装在我的 SSH 密钥中,但这有点烦人。我宁愿通过 ant 脚本将我的密码发送到 rsync 并收工。

(编辑 - 如果你真的无法在没有示例的情况下处理这个问题,假设这台服务器不在我的控制范围内,他们邪恶的系统管理员出于任何原因拒绝让我使用 SSH 密钥登录。谁知道?他只是疯了男人!)

有什么方法可以在不编辑 ssh 配置的情况下调用 SSH,或者更具体地说,在非交互模式下调用 rsync?换句话说,只需提供密码?

4

2 回答 2

4

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

基本上,我使用了一个名为“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_password\r"; interact};'
于 2012-10-26T22:18:16.587 回答
-2

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

于 2012-10-26T23:51:24.883 回答