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 2

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