我正在将站点部署到服务器,但端口22在我的办公室被阻止。我现在可以将corkscrew
与ssh_config
ProxyCommand
指令一起使用,一切正常,只需使用$ ssh my_server_alias_in_sshconfig
进行连接。
现在我需要使用Fabric来简化部署,但即使设置env.use_ssh_config=True
它也不起作用,它只是查找服务器的IP地址并尝试直接连接,忽略ProxyCommand
和其他一切。 Fabric文档说它利用了一些可用的配置设置,但没有使用ProxyCommand
,Fabric在这里似乎毫无用处。
任何帮助?
我得到了这个gist,但我不认为它解决了ProxyCommand
的要求。
此致
答案 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
启动“隧道”,然后将其打开。localhost
,因此在一次部署到多个服务器时可能会出现问题。我当时正在使用它,但是,这可以改进吗?
答案 1 :(得分:1)
更好的解决方法,但仍然不完美:
Host somebox
ControlMaster auto
ControlPath ~/.ssh/socket/%r@%h:%p
然后$ ssh somebox
首先打开,然后$ fab -H somebox deploy
,流量将通过袜子,因此它会尊重ProxyCommand。