1

在我使用 Git 的过程中,我请求帮助解决一个奇怪的错误。

我已经安装了 Gitosis。这是我的配置:

cat /root/gitosis-admin/gitosis.conf 
[gitosis]
loglevel = DEBUG

[group gitosis-admin]
writable = gitosis-admin
members = admin

[group sugar-dev]
writable = sugar-dev
members = eyablokov

所以我将一个 SSH 密钥“admin”指向管理 Gitosis。我还创建了“sugar-dev”回购并将另一个密钥指定为成员。“admin”键在一台机器上,没关系。其次,“eyablokov”密钥是我另一台机器上的常用成员密钥。我计划仅将此密钥用作开发人员。

我已经通过正常方式配置并将更改推送到 gitosis-admin repo 中。两个键都在 keydir/ 目录中,并且也被远程推送。

之后,在另一台存储“eyablokov”密钥的机器上,我创建了一个本地目录:mkdir ~/Projects/sugar-dev. 输入:cd ~/Projects/sugar-dev。下一个:git init和之后:git remote add origin git@SERVER:sugar-dev.git。没关系。

例如,在我尝试之后,添加一些东西并提交并推送并遇到问题:

echo 'Please, describe the project.' > DESCRIPTION
git add DESCRIPTION 
git commit -am "Added description file"

并向我git push origin master展示

Pushing to git@SERVER:sugar-dev.git
fatal: cannot exec '/Users/gular/.ssh/eyablokov_dsa': Permission denied
fatal: unable to fork

我不知道该怎么办。git 必须看到我的 eyablokov,而不是 eyablokov_dsa,密钥。dsa 是我的另一个关键。我尝试过 chmod,尝试移动 .ssh/config 文件,其中 IdentityFile 指向 dsa 键。没有帮助。

4

1 回答 1

0

当您使用基于 ssh 的 git 服务器时(例如 gitosis,或者更好的是gitolite ,因为 gitosis 已过时且不再维护),您需要一个~/.ssh/config文件来指定您想要使用的确切 ssh 密钥文件名。
(在“用户在使用 gitolite 时被要求输入密码”中也有说明)

在你的情况下:

Host eyablokov
    HostName SERVER 
    User git
    IdentityFile /Users/gular/.ssh/eyablokov

这允许您使用这种 url:

git clone eyablokov:sugar-dev.git

在 Windows 上,确保您使用的是git-cmd.bat实例(包含在 msysgit 中),它将正确设置您的HOME环境变量(Windows 默认情况下未设置)。

于 2013-02-28T08:14:34.053 回答