如何从结构中的终端命令行为多个主机提供ssh密钥

时间:2014-03-25 05:04:08

标签: python ssh fabric

我想在多台主机上测试各种软件包安装。不同的主机有不同的密码/ ssh-key。

我不想在我的fab文件中硬编码主机名及其ssh-key。如何通过终端命令行传递多个主机及其ssh-key。

我的fab文件中的代码看起来像 -

    from fabric.api import settings, run, env

    def test_installation(cmd):
    run("dpkg -s %s" %cmd)

我称之为 -

    fab test_installation:tomcat7 --hosts "user1@host1:port","vuser2@host2:port" -i "ssh-file-path for host1","ssh-file-path for host2"

请建议我正确的方法。任何帮助都是最受欢迎的。

1 个答案:

答案 0 :(得分:1)

您不提供主机的ssh密钥,但只提供您的ssh密钥,用于在主机上的authorized_keys中注册。并且您只提供它的路径(通常是~/.ssh/id_rsa)。

此外,您可以配置fabric以使用ssh配置,因此您根本不需要对任何路径进行硬编码。它可以使用相同的键,就像在shell中键入ssh my_host时使用的那样。

如何在面料教程中找到:

http://docs.fabfile.org/en/1.8/usage/execution.html#leveraging-native-ssh-config-files

http://docs.fabfile.org/en/1.8/usage/env.html#full-list-of-env-vars

您还可以将〜/ .ssh / config设置为针对不同主机使用不同的密钥。 如果您不熟悉ssh并进行配置,请参阅:

http://linux.die.net/man/5/ssh_config