一台机器上有多个gitolite用户

一台机器上有多个gitolite用户,git,gitolite,Git,Gitolite,我已经在远程机器上设置了gitolite,并从本地配置了它。我不想让我的活动显示为“admin”,而是创建了用户和密钥“noah”。在为“诺亚”创建回购协议后,我被拒绝访问。我相信,因为我还是“管理员” 所以我在一台机器上有两个帐户。我如何转换 谢谢 更新: 这是我的本地~/.ssh/config/: #noah account Host git-noah HostName remote User git IdentityFile ~/.ssh/noah</

我已经在远程机器上设置了gitolite,并从本地配置了它。我不想让我的活动显示为“admin”,而是创建了用户和密钥“noah”。在为“诺亚”创建回购协议后,我被拒绝访问。我相信,因为我还是“管理员”

所以我在一台机器上有两个帐户。我如何转换

谢谢

更新:

这是我的本地~/.ssh/config/:

#noah account
    Host git-noah
    HostName remote
    User git
    IdentityFile ~/.ssh/noah</code>
本地命令:
git克隆git-noah@remote-ip:reponame

远程计算机上的授权密钥:
command=“/usr/share/gitolite/gl auth command noah”,无端口转发,无X11转发,无代理转发,无pty ssh rsa…

如果有关系的话,我在Mac电脑上。我还做了
ssh-add-K~/.ssh/noah

更新2:

下面是auth.log:

server sshd[2834]: Invalid user git-noah from localip
server sshd[2834]: input_userauth_request: invalid user git-noah [preauth]
以下是本地权限:

drwx------+  13 noah    442 19 Apr 14:47 .ssh
-rwx------ 1 git 1067 Apr 19 14:57 authorized_keys
drw------- 2 git  4096 Apr 19 14:57 .ssh
远程权限:

drwx------+  13 noah    442 19 Apr 14:47 .ssh
-rwx------ 1 git 1067 Apr 19 14:57 authorized_keys
drw------- 2 git  4096 Apr 19 14:57 .ssh

如果您使用的这两个帐户具有不同的ssh密钥(如“”中所述),那么切换的方式是使用ssh url,该url指示ssh查找noah的密钥(而不是admin的密钥)

为此,您需要一个ssh配置文件(在
HOME/.ssh/config
中),如我在“”中所述:

要克隆为noah制作的repo,您需要使用一个url,该url引用ssh配置文件中的正确条目

git clone gitolite-noah:yourRepo.git
通过使用该url,您正在设置一个名为
origin
:您可以使用
git remote-v
查看它

这意味着任何使用该远程名称的命令(如git pull origin或git push origin)都将使用该ssh url,该url显式地引用特定的ssh私钥,从而将您标识为Gitolite
noah


调试ssh最有效的方法是检查sshd如何侦听服务器上的查询

因为它是debian():

  • /usr/sbin/sshd-d-d-p 222
    在服务器上
  • ssh-p 222-Tv git noah
    在客户端上
(注意使用专用端口的诀窍,这样就不需要停止实际的sshd:它是一个仅用于调试目的的特殊端口上的一次性会话)

我们很快就看到了一个

Could not open authorized keys '/home/git/.ssh/authorized_keys': Permission denied
这与:

root@server:/# ls -lato ~git/
drw------- 2 git 4096 Apr 19 14:57 .ssh

A
chmod 700~git/.ssh

@Noah查看我编辑的答案:url足以将您标识到Gitolite@Noah您必须确保在名为
Noah.pub
的Gitolite admin/keys文件夹中添加了公钥。密钥的名称将是gitolite的用户名称。并且您的ssh配置文件必须引用与您注册的公钥对应的私钥。在gitolite服务器上继续,检查~git/.ssh/authorized_keys的内容:您应该会在那里看到noah公钥。@noah看起来不错。你说“我意识到我没有在公钥上执行git add和git commit”是什么意思?因为如果您的远程授权密钥文件确实包含您的公钥,那么这应该可以工作。您可以使用
ssh-tvv git noah
@noah检查它以注册您的密钥,您需要将其添加到
gitolite admin/keys
,提交并推送
gitolite admin
repo。我相信您已经这么做了,因为
~git/.ssh/authorized_keys
包含了正确的内容。在本地(Mac)端也检查ssh保护(chmod)。如中所示,@Noah chmod将在本地和远程完成。但是授权的_密钥只在远程端(gitolite使用它来验证用户),然后您需要调试ssh部分,而不是gitolite部分:我刚刚意识到了这个问题!(或者至少有一个问题)您正在使用git-noah@remote-ip:repoiname。这是错误的。正如我在回答中提到的,您必须使用git noah:reponame
。请注意“:”。这将处理无效用户git noah的错误消息。@VonC已清除该错误,但仍提示输入密码。