如何通过终端命令在Fabric中为多个主机提供SSH密钥

1 投票
1 回答
817 浏览
提问于 2025-04-17 23:46

我想在多个主机上测试不同的软件包安装。不同的主机有不同的密码和SSH密钥。

我不想在我的fab文件里死死写死主机名和它们的SSH密钥。我该如何通过终端命令行传递多个主机及其SSH密钥呢?

我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 个回答

1

你不需要提供主机的ssh密钥,只需要提供你自己的ssh密钥,这个密钥用来在主机上注册你的身份,通常会放在一个叫做~/.ssh/id_rsa的地方。

而且,你可以设置fabric来使用你的ssh配置,这样就不需要在代码里写死任何路径。它会使用和你在命令行输入ssh my_host时一样的密钥。

关于怎么做,你可以在fabric的教程里找到:

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

撰写回答