使用 Git over OpenSSH 在 windows server 2016 上部署 repo

Posted

技术标签:

【中文标题】使用 Git over OpenSSH 在 windows server 2016 上部署 repo【英文标题】:Using Git over OpenSSH to deploy repo on windows server 2016 【发布时间】:2018-09-06 01:32:08 【问题描述】:

我在使用 git 命令从位于 Ubuntu 服务器上的裸仓库到位于 Windows 服务器 2016(在 Active Directory 中)上的另一个裸仓库时遇到困难

我在 windows 服务器上使用https://github.com/PowerShell/Win32-OpenSSH 来允许 ssh 连接。

我的 .ssh/config

Host INTRANET
Hostname 192.168.1.153 
User git@INTRANET  
IdentityFile ~/.ssh/id_rsa

请允许我使用我的 rsa 密钥登录

$ ssh INTRANET

打开一个控制台:

$ whoami
INTRANET+git

还有

$ pwd
/c/Users/git

然后

$ ls
 myrepo.git

最后:

$ ls -all myrepo.git/
total 25
drwxr-xr-x 1 INTRANET+git 197121   0 Mar 27 13:24 .
drwxr-xr-x 1 INTRANET+git 197121   0 Mar 27 15:52 ..
-rw-r--r-- 1 INTRANET+git 197121  60 Mar 23 11:46 FETCH_HEAD
-rw-r--r-- 1 INTRANET+git 197121  23 Mar 16 11:31 HEAD
-rw-r--r-- 1 INTRANET+git 197121 151 Mar 16 11:30 config
-rw-r--r-- 1 INTRANET+git 197121  73 Mar 16 11:30 description
drwxr-xr-x 1 INTRANET+git 197121   0 Mar 27 13:24 hooks
drwxr-xr-x 1 INTRANET+git 197121   0 Mar 27 13:24 info
drwxr-xr-x 1 INTRANET+git 197121   0 Mar 27 13:24 objects
-rw-r--r-- 1 INTRANET+git 197121 284 Mar 16 11:31 packed-refs
drwxr-xr-x 1 INTRANET+git 197121   0 Mar 27 13:24 refs

Ubuntu 持有一个裸仓库

$ cat config
[remote "origin"]
    url = INTRANET:~/myrepo.git

但是当我

$ git --bare fetch
fatal: ''~/myrepo.git'' does not appear to be a git repository
fatal: Could not read from remote repository.

Please make sure you have the correct access rights
and the repository exists.

【问题讨论】:

你的仓库在 Windows 服务器上的路径是什么?你的第一个ls 显示myrepo.git,但第二个显示'TREQ.git`。 @stephenNewell 错字已更正 【参考方案1】:

尝试使用完整路径

url = INTRANET:/c/Users/git/myrepo.git

这样,~ 就不必解释了。

【讨论】:

你的意思是 INTRANET:/c/Users/git/myrepo.git? 我仍然收到相同的fatal: ''/c/Users/git/myrepo.git'' does not appear to be a git repository fatal: Could not read from remote repository. Please make sure you have the correct access rights and the repository exists. @PeterPeterson 当你做一个ssh INTRANET 时,你可以去cd /c/Users/git/myrepo.git,并在其中做一个git status,只是为了确认repo 存在吗? ssh INTRANET 然后cd /c/Users/git/myrepo.git。因为它是一个裸仓库,所以 git branch 给我 *master @PeterPeterson 你能在 ssh 配置中将用户从 git@INTRANET 更改为 git 吗?

以上是关于使用 Git over OpenSSH 在 windows server 2016 上部署 repo的主要内容,如果未能解决你的问题,请参考以下文章

Jenkins Publish over SSH 异常:Connection reset by peer: socket write error

OpenSSH:git@github.com 权限被拒绝

在git与tortoisegit中使用openSSH与PuTTY

05Win7上openSSH的安装与配置

Openssh 默认算法升级,可能影响你的Git使用

Openssh 默认算法升级,可能影响你的Git使用