TortoiseGIT + Gitolite'У 3
Я только что настроил сервер git + Gitolite на debian, сгенерировал пару ключей на своей рабочей станции (Windows) с puttygen и зарегистрировал первый ключ pub, используя на сервере
gitosis setup -pk firstuser.pub
Затем я использую TortoiseGit для клонирования репозитория gitolite-admin, используя url : git@git.myserv.com:gitolite-admin и tel Tortoise, чтобы использовать firstuser.ППК в качестве закрытого ключа. Он прекрасно работает до этого момента.
Затем я хочу протестировать добавление пользователя и создание нового РЕПО на моей рабочей станции.
Я добавляю в conf файл раздела:
repo testcreation
RW+ = seconduser
Я генерирую на своей рабочей станции вторую пару ключей ssh для seconduser. Просто поставьте вторую точку.паб в keydir / commit и нажмите новый конфиг.
Config шов, чтобы быть в порядке, мой новый пользователь pub ключ добавлен в ~/.ssh / authorized_keys пользователя git на стороне сервера.
Я настроил новый РЕПО на своей рабочей станции с Tortoise, добавил новый пульт дистанционного управления:
name : origin
url : git@git.myserv.com:testcreation
Putty Key : seconduser.ppk
А затем нажмите, чтобы создать РЕПО
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 ? Связано ли это с тем, что я использую два разных ключа на одной и той же рабочей станции ?
1 ответ:
Что ж, я нашел способ решить свою проблему.
Обратите внимание, что моя рабочая станция находится под Windows
Дело в том, что TortoiseGit использует OpenSSH не как SSH-клиент, а как Putty. Это действительно беспокоит в моем случае, потому что TortoiseGit с Plink (putty) не может обрабатывать 2 закрытых ключа для аутентификации 2 разных пользователей Gitolite от одной рабочей станции до одного пользователя@host (в моем случае firstuser и seconduser), используя putty в качестве ssh-клиента.Обратите внимание, что в реальном жизнь, вам, вероятно, не нужно будет использовать 2 различных SSH аутентификации на одной и той же рабочей станции, мне нужно было только, чтобы сделать "тесты".
Проблема в том, что putty, насколько я вижу, регистрирует 1 ключ на пользователя@host (git@git.myserv.com), мне нужны были два ключа...Я понял это после использования git bash (и openSSH) с помощью файла конфигурации ssh в
%HOMEDRIVE%%HOMEPATH%\.ssh\config
Вот мой конфиг:
Host gitfirstuser HostName git.myserv.com User git IdentityFile ~/.ssh/firstuser@git.myserv.com Host gitseconduser HostName git.myserv.com User git IdentityFile ~/.ssh/seconduser@git.myserv.com
Где
firstuser@git.myserv.com
иseconduser@git.myserv.com
- файл закрытого ключа в формате OpenSSH keyПосле этого я мог клонировать
testcreation.git
без проблем используяgit bash
И так толкайте, тяните и т. д...git clone gitseconduser:testcreation
Но когда у вас есть какой-то фанбой GUI, git bash-это просто кошмар, поэтому вот решение в TortoiseGit, чтобы заставить его использовать реальный ssh-клиент:
Откройте Настройки TortoiseGit:
> Network section > SSH Client input > Browse...
Ищите ssh.exe в каталоге установки msysgit, в моем случае:
C:\Program Files\Git\bin\ssh.exe
Как только вы изменили ssh-клиент на ssh.exe вы можете полностью использовать преимущества вашего SSH config файл.
Например:
В вашем
%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