1

我正在尝试同时使用 Fabric、Django 和 Celery 在远程主机上进行操作。

在我的情况下,远程主机将是动态的。

我猜Django和Celery的使用无关紧要,问题可以缩小到

  • 如何在单独使用 Fabric 时动态提供 SSH 密码。

我找到了这段代码,它展示了如何使用 Django 和 Celery 来做到这一点。

from fabric.api import hosts
from celery import task

@task()
def remote_celery_task():
    username, host = get_host_details()
    host_string = "%s@%s" % (username, host)

    @hosts(host_string)
    def fab_task():
        run("ls")

    execute(fab_task)

但它没有说明如何将 SSH 密码动态传递给 Fabric。我知道以这种方式提供密码并不安全,但我现在愿意牺牲安全性。

更新

当我将代码更改为

@hosts(host_string)
    def my_fab_task():
        env.password = testhost.SSH_password # is this the correct way ? its working for me
        run("ls")
4

1 回答 1

2

无需担心密码,只需执行 ssh keygens。在您将要连接的主机之间共享密钥,您可以在远程主机上执行无密码 ssh 操作。

于 2013-06-04T19:00:46.897 回答