如何通过终端命令在Fabric中为多个主机提供SSH密钥
我想在多个主机上测试不同的软件包安装。不同的主机有不同的密码和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和它的配置不太熟悉,可以参考: