【发布时间】:2015-12-23 23:29:18
【问题描述】:
我有一个 google 计算引擎实例,我想在该实例上设置一个 git 服务器,开发人员可以访问该服务器来推送和拉取开发源代码。
我创建了一个名为git 的用户来访问存储库。然后将每个开发者的公钥添加到服务器/home/git/.ssh/authorized_keys 文件中。
以下是我为执行上述操作而发布的配置
$ useradd –m /home/git –s /usr/bin/git-shell git
在服务器上安装 git
$ yum install git -y
为用户配置 ssh 授权
$ cd /home/git
$ mkdir .ssh && chmod 700 .ssh
$ touch .ssh/authorized_keys && chmod 600 .ssh/authorized_keys
将开发者 ssh 密钥附加到服务器上的 authorized_keys 文件中
为代码创建一个裸仓库
$ mkdir /opt/git/project.git
$ cd /opt/git/project.git
$ git init - -bare - -shared=group
编辑现有权限
$ chgrp -R developers .
测试配置
$ git clone ssh://git@IP_ADDRESS/opt/git/project.git
当我尝试克隆存储库时,它会发出错误:
注意:我在物理服务器上尝试了上述设置,它运行良好,不需要在系统上配置 ssh 密钥。所以我想知道它是否是计算引擎的问题。
在某些时候,我认为这是 /opt 目录的权限问题,因此我将其他人的权限修改为 read/write,但它不起作用。
此外,我还创建了一个存储库,但在用户 git 的主目录中,它仍然无法正常工作。
我需要一些帮助来解决用户 git 的身份验证问题。
解决方案
我发现了背后的诀窍。实际上,我用来克隆项目的机器正在运行 Windows 8 操作系统。所以诀窍是将C:\Users\USERNAME\.ssh 中的id_rsa.*(pub 和ppk)文件复制到C:\Users\USERNAME\git\.ssh 的git 目录中。
有了这个,一切都完美无缺。
【问题讨论】:
-
在您的 DOS 会话中,您是否定义了 HOME? git 会在
%HOME%\.ssh中查找您的公共/私有 ssh 密钥。 -
您应该尝试
ssh -vvv git@IP_ADDRESS看看问题出在哪里。根据失败的阶段,您应该检查服务器错误日志是否为您提供更多信息 -
@VonC 是的,我确实有,我生成了一个密钥并将我的 dos 会话的公钥内容复制到 git 服务器上的
/home/git/.ssh/authorized_keys文件中。 -
@Jakuje 从上面的帖子中,您可以注意到 git 用户没有启用操作系统控制台,但 git 仅按照
–s /usr/bin/git-shell -
那么,如果您执行
dir %HOME%\.ssh,您会在该文件夹中看到您的 id_rsa(.pub) 吗?
标签: git ssh google-compute-engine