Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/ssh/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Git、SSH和ProxyCommand_Git_Ssh_Proxy - Fatal编程技术网

Git、SSH和ProxyCommand

Git、SSH和ProxyCommand,git,ssh,proxy,Git,Ssh,Proxy,我有一个位于防火墙后面的git服务器。我可以从家里访问防火墙,但不能访问git服务器。但是,我可以从防火墙访问git服务器(也就是说,我可以通过SSH连接到防火墙,然后通过SSH从防火墙连接到git服务器)。我希望从我的家用机器推拉到git repos,我认为SSH-proxy命令可以做到这一点。因此,我在SSH配置文件中添加了以下内容: Host git_server HostName git_server.dom User user_git_server IdentityFile ~/

我有一个位于防火墙后面的git服务器。我可以从家里访问防火墙,但不能访问git服务器。但是,我可以从防火墙访问git服务器(也就是说,我可以通过SSH连接到防火墙,然后通过SSH从防火墙连接到git服务器)。我希望从我的家用机器推拉到git repos,我认为SSH-proxy命令可以做到这一点。因此,我在SSH配置文件中添加了以下内容:

Host git_server
 HostName git_server.dom
 User user_git_server
 IdentityFile ~/.ssh/id_rsa
 ProxyCommand ssh firewall exec nc %h %p

Host firewall
 HostName firewall.dom
 User user_firewall
 IdentityFile ~/.ssh/id_rsa
通过此设置,我可以通过执行SSH git_server直接SSH到git服务器。但是,需要与服务器对话的git命令不起作用
git remote show origin
失败,显示以下消息:

ssh: connect to host git_server.dom port 22: Operation timed out
fatal: Could not read from remote repository.

Please make sure you have the correct access rights and the repository exists.
原始回购协议的url为

ssh://user_git_server@git_server.dom/path/to/bare/repository/repo.git

我想我已经准备好了大部分东西,但是我缺少了一个关键的小部分。是否有任何指向我可能做错了什么的指针?

如“”中所述,您可能在代理服务器上没有该命令

还有,它将使用CONNECT方法与HTTP(S)代理服务器协商,以获得到远端服务器的干净管道。看

现在你可以说(例如):

您为存储库使用了错误的URL。由于您的ssh配置文件有一个用于
git_server
的主机条目,因此您还需要在存储库URL中使用该主机名,否则ssh将不会使用proxy命令

正确的URL应该是

ssh://user_git_server@git_server/path/to/bare/repository/repo.git
或者干脆

user_git_server@git_server:/path/to/bare/repository/repo.git

不,那也行。它是一个,即不使用
~/.ssh/config
文件的非。如果按照建议使用,则无需指定用户名:
ssh://git_server:/path/to/bare/repository/repo.git
。你的意思是,不是“颜色”;)我不确定到底是什么让你说“不”。ssh uri何时不使用ssh配置文件?啊。我的意思是“不,OP没有使用错误的url,只是不同的语法不会利用ssh配置文件”。好吧,在这种情况下,似乎你错了。至少我的ssh不关心语法,总是使用我的配置文件。
ssh://user_git_server@git_server.dom/path/to/bare/repository/repo.git
                      ^^^^^^^^^^^^^^
ssh://user_git_server@git_server/path/to/bare/repository/repo.git
user_git_server@git_server:/path/to/bare/repository/repo.git