如何使用ssh_config的ProxyCommand和corkscrew使用Fabric?

时间:2012-04-18 19:53:16

标签: proxy ssh firewall fabric

我正在将站点部署到服务器,但端口22在我的办公室被阻止。我现在可以将corkscrewssh_config ProxyCommand指令一起使用,一切正常,只需使用$ ssh my_server_alias_in_sshconfig进行连接。

现在我需要使用Fabric来简化部署,但即使设置env.use_ssh_config=True它也不起作用,它只是查找服务器的IP地址并尝试直接连接,忽略ProxyCommand和其他一切。 Fabric文档说它利用了一些可用的配置设置,但没有使用ProxyCommand,Fabric在这里似乎毫无用处。

任何帮助?

我得到了这个gist,但我不认为它解决了ProxyCommand的要求。

此致

2 个答案:

答案 0 :(得分:1)

目前,我设置了LocalForward指令,如:

Host my_server_using_corkscrew
    ProxyCommand ...
    ...
    LocalForward 1122 localhost:22

以下:

Host my_server_using_corkscrew.localtunnel
    Hostname localhost
    Port 1122

然后,运行Fabric with:

$ fab my_deploy_command --hosts=my_server_using_corkscrew.localtunnel

这有两个不便之处:

  • 我需要先使用$ ssh my_server_using_corkscrew启动“隧道”,然后将其打开。
  • 在fabfile中,主机名始终为localhost,因此在一次部署到多个服务器时可能会出现问题。

我当时正在使用它,但是,这可以改进吗?

答案 1 :(得分:1)

更好的解决方法,但仍然不完美:

Host somebox
    ControlMaster auto
    ControlPath ~/.ssh/socket/%r@%h:%p

然后$ ssh somebox首先打开,然后$ fab -H somebox deploy,流量将通过袜子,因此它会尊重ProxyCommand。