我的机器上有我的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的东西.
您可以将更改推送到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)