【问题标题】:Rsync over SSH from an ant script with a password使用密码从 ant 脚本通过 SSH 进行 Rsync
【发布时间】:2012-10-26 22:15:33
【问题描述】:

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

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

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

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

【问题讨论】:

    标签: ant ssh build-automation development-environment rsync


    【解决方案1】:

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

    基本上,我使用了一个名为“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};'
    

    【讨论】:

    • 这很好用! (有一个不允许 pubkey auth 的邪恶管理员)
    • 很高兴听到这个消息。正如@Mark O'Connor 指出的那样,请记住这是非常不安全的。确保符合您的用例要求。
    【解决方案2】:

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

    【讨论】:

    • Yeeeep,使用证书。再说一次,并不是说这不是大多数时候这样做的安全、正确的方法。但是,就我而言,我明确有兴趣避免它。谁知道?也许我们正在处理不接受密钥的第 3 方服务器,或者由于某种原因我无法安装我的证书。或者干脆称之为求知欲。关键是,关于不想要 SSH 密钥答案的问题很明确。
    猜你喜欢
    • 2012-02-23
    • 1970-01-01
    • 2013-01-19
    • 1970-01-01
    • 2013-05-15
    • 1970-01-01
    • 2019-09-29
    • 2013-07-30
    • 2013-08-25
    相关资源
    最近更新 更多