2014-02-12 3 views
2

Я просто настроить мерзавец + сервер Gitolite на Debian, произвел пару ключей на моей рабочей станции (Windows) с PuTTYgen и зарегистрировать первый ключ паба с использованием на сервереTortoiseGit + Gitolite 3

gitosis setup -pk firstuser.pub 

Затем я использую TortoiseGit для клонирования gitolite-admin repo, используя url: [email protected]: gitolite-admin и tel Tortoise для использования firstuser.ppk в качестве закрытого ключа. Он отлично работает до этого момента.

Затем я хочу протестировать добавление пользователя и создание нового репо на моей рабочей станции.

добавить в файл конф раздел:

repo testcreation 
    RW+  = seconduser 

я генерировать на моей рабочей станции второй пары ключей SSH для seconduser. Просто поставьте файл seconduser.pub в keydir/commit и нажмите новую конфигурацию.

Конфигурируйте шов, чтобы быть в порядке, моя новая пользовательская паб-ключ добавлена ​​в ~/.ssh/authorized_keys пользователя git на стороне сервера.

Я создал новый репозиторий на моей рабочей станции с черепахой, добавить новый пульт дистанционного управления:

name : origin 
url : [email protected]:testcreation 
Putty Key : seconduser.ppk 

И затем нажмите, чтобы создать Repo

TortoiseGit Log : 

git.exe push --all --progress "origin" 

FATAL: W any testcreation firstuser DENIED by fallthru 
(or you mis-spelled the reponame) 
fatal: Could not read from remote repository. 

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


git did not exit cleanly (exit code 128) (1591 ms @ 12/02/2014 12:20:17) 

Почему Gitolite идентифицировать меня как firstuser, когда я отправить секретный ключ senconduser? Имеет ли это какое-то отношение к тому, что я использую два разных ключа на одной рабочей станции?

+0

Не могли бы вы попробовать с 'git @ git.myserv.com/testcreation' как удаленный URL? – VonC

+0

well ... fatal: '[email protected]/testcreation' не является репозиторием git =) – SmasherHell

+0

Ok. Я упомянул об этом, потому что '': ''- это нотация scp, лучше используемая в сочетании с файлом' ~/.ssh/config', чтобы объявить другой ключ (как в http://stackoverflow.com/a/ 20139338/6309 или http://stackoverflow.com/a/19976522/6309) – VonC

ответ

4

Ну, я узнал, как решить мою проблему.

Обратите внимание, что моя рабочая станция под Windows,

Дело в том, TortoiseGit не использует OpenSSH, как SSH клиент, но Патти. Это действительно беспокоит мой случай, потому что TortoiseGit с Plink (putty) не может обрабатывать 2 закрытых ключа для аутентификации 2 разных пользователей Gitolite с одной и той же рабочей станции на одного пользователя @ host (в моем случае firstuser и seconduser) с использованием putty as ssh клиент.

Обратите внимание, что в реальной жизни вам, вероятно, не понадобится использовать 2 разных аутентификации ssh на одной и той же рабочей станции, мне нужно было только выполнить «тесты».

Проблема заключается в том, что, насколько я вижу, проблема заключается в регистрации 1 ключа на пользователя @ host ([email protected]), мне нужен был два ключа ... Я понял, что после использования git bash (и OpenSSH) с помощью SSH конфигурационный файл в %HOMEDRIVE%%HOMEPATH%\.ssh\config

Вот мой конфиг:

Host gitfirstuser 
HostName git.myserv.com 
User git 
IdentityFile ~/.ssh/[email protected] 

Host gitseconduser 
HostName git.myserv.com 
User git 
IdentityFile ~/.ssh/[email protected] 

где [email protected] и [email protected] являются файл приватного ключа в формате ключа OpenSSH

После этого я мог бы клонировать testcreation.git без каких-либо проблема с использованием git bash

git clone gitseconduser:testcreation 

и поэтому толчок, тянуть и т. д.

Но когда у вас есть некоторые GUI FanBoy, мерзавец баш это просто кошмар, так вот решение в TortoiseGit, чтобы сделать его использовать РЕАЛ SSH-клиент с:

Открыть TortoiseGit Настройки:

> Network section > SSH Client input > Browse... 

Посмотрите на ssh.exe в msysgit директории установки, в моем случае:

C:\Program Files\Git\bin\ssh.exe 

После того, как вы изменили клиент SSH к ssh.exe вы можете полностью воспользоваться вашим конфигурационным файлом ssh.

Для Exemple:

в вашем %HOMEDRIVE%%HOMEPATH%\.ssh\config

Host ssh_host_1 
HostName git.myserv.com 
User git 
IdentityFile ~/.ssh/ssh_host_1_keyfile 

В TortoiseGit при добавлении пульта дистанционного управления, или клонирование с помощью следующей URL:

ssh_host_1:repository_name 

Нет необходимости искать секретный ключ файл, openssh будет выполнять идентификацию в соответствии с ssh_host_1 раздел

+0

Хороший подробный ответ. +1 – VonC

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