Git克隆通过反向隧道

Bri*_*ian 17 git ssh

我的机器上有我的Git仓库,它在家里没有自己的公共IP; 我想在我的Web服务器上克隆这个repo.反向隧道允许我从我的机器拉到服务器是否正确?我要发出什么命令来执行克隆?我的本地机器运行Windows; 服务器运行Ubuntu.

Paŭ*_*ann 17

原则上,你可以做类似的事情

ssh -R 2222:localhost:22  username@webserver.com 
Run Code Online (Sandbox Code Playgroud)

然后在您的网络服务器上使用

git clone ssh://user@localhost:2222/path/to/repo.git/
Run Code Online (Sandbox Code Playgroud)

但是,这会对您的数据进行两次加密.

或者,您可以使用git支持的任何其他协议,并为这些协议转发正确的端口.

你也可以把这样的部分放到〜/ .ssh/config中:

Host my-server
HostName localhost
ForwardX11 no
Port 2222
Run Code Online (Sandbox Code Playgroud)

然后你可以使用这个克隆命令: git clone git@my-server:mytools/projectName.git.(这允许您存储服务器的密钥而不是属于localhost,并使您的git配置中的URL更清晰.)

对于您的服务器(隧道服务器和最终主机),您通常希望对每个公钥授权进行身份验证,为此您应该将私钥(例如id_rsa)放在〜/ .ssh目录中.(并且那里的所有文件,特别是私钥,应该只对您的用户可读,并且该目录只能为您的用户编写.)
所有这些都不是特定于隧道,而是通用SSH的东西.


Ric*_*ich 7

您可以将更改推送到Web服务器,而不是尝试提取它们:

在Web服务器上设置存储库:

cd /somedir
git init --bare
Run Code Online (Sandbox Code Playgroud)

从您的开发机器推送到该回购:

git remote add web user@web:/somedir
git push web master 
Run Code Online (Sandbox Code Playgroud)

如果您想要推送到非裸存储库(例如,如果您的网络应用程序在结账时运行),那么您将需要推送到当前未检出的分支,然后合并.

即在您的开发机器上:

git push web master:master-from-dev
Run Code Online (Sandbox Code Playgroud)

然后登录到Web机器并执行:

git merge master-from-dev
Run Code Online (Sandbox Code Playgroud)