2014-04-19 3 views
1

Я установил гитолит на удаленной машине и настроил его из моего локального. Я не хотел, чтобы моя деятельность отображалась как «админ», и создал пользователя и ключ «noah». После создания репо для «noah» мне отказали в доступе. Я верю, потому что я все еще был «администратором».Несколько пользователей-гитолитов на одной машине

У меня есть две учетные записи на одной машине. Как мне переключиться?

Благодаря

UPDATE:

Вот мой локальный файл ~/.ssh/конфигурации /:

#noah account 
    Host git-noah 
    HostName remote 
    User git 
    IdentityFile ~/.ssh/noah</code> 

команда на местном: git clone [email protected]:reponame

authorized_keys на удаленный: command="/usr/share/gitolite/gl-auth-command noah",no-port-forwarding,no-X11-forwarding,no-agent-forwarding,no-pty ssh-rsa ...

Если это имеет значение, я нахожусь на Mac. Я также сделал ssh-add -K ~/.ssh/noah

UPDATE 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 
+0

Затем вам нужно отладить часть ssh, а не часть гитолит: http://stackoverflow.com/a/23054951/6309 и http://stackoverflow.com/a/7443893/6309 – VonC

+0

Я только что понял проблему ! (или, по крайней мере, один из вопросов). Вы используете git-noah @ remote-ip: reponame. Это не правильно. Вы должны использовать 'git-noah: reponame', как я упомянул в своем ответе. Обратите внимание ':'. Это позаботится об ошибке «Неверный пользователь git-noah». – VonC

+0

@VonC Это избавит вас от этой ошибки, но пароль все еще запрашивается. – Noah

ответ

1

Если вы используете эти учетные записи с разными ключами ssh (как описано в «How do programs like gitolite work?»), то, как вы переключаетесь, используется URL-адрес ssh, который инструктирует ssh искать ключ noah (вместо ключа администратора).

Для этого вам нужен файл SSH конфигурации (в вашем HOME/.ssh/config), как я подробно в «How to use specified key when working with github via portablegit?»:

#admin account 
Host gitolite-admin 
    HostName yourGitoliteServer 
    User git 
    IdentityFile ~/.ssh/id_rsa_admin 

#noah account 
Host gitolite-noah 
    HostName yourGitoliteServer 
    User git 
    IdentityFile ~/.ssh/id_rsa_noah 

Чтобы клонировать репозиторий сделал для Ноя, вы бы использовать URL-адрес, который ссылаться на правой записи в файле конфигурации ssh.

git clone gitolite-noah:yourRepo.git 

Используя этот адрес, вы настраиваете удаленный по имени origin: вы можете увидеть его с git remote -v.

Это означает, что любая команда, использующая это удаленное имя (например, git pull origin или git push origin), будет использовать этот ssh url, который явно ссылается на конкретный закрытый ключ ssh, который, в свою очередь, идентифицирует вас с Gitolite как noah.


Самый эффективный способ отладки ssh - проверить, как sshd прослушивает запрос на сервере.

Поскольку это Debian (as per out discussion):

  • /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 

Что соответствует:

[email protected]:/# ls -lato ~git/ 
drw------- 2 git 4096 Apr 19 14:57 .ssh 

chmod 700 ~git/.ssh исправили ситуацию.

+0

Как насчет команд типа push и commit? Должен ли я каждый раз указывать пользователя и репо? Есть ли способ выбрать дефолт? – Noah

+1

@Noah См. Мой отредактированный ответ: url достаточно, чтобы идентифицировать вас с Gitolite. – VonC

+0

Я делаю 'git clone git-noah @ remotip: repo'. Он запрашивает пароль. Сервер auth.log говорит 'sshd [3283]: input_userauth_request: недопустимый пользователь git-noah [preauth]'. – Noah

Смежные вопросы