SVN через SSH не работает на Windows с Tortoise SVN

SVN через SSH не работает на Windows с Tortoise SVN

У меня есть доступ по SSH к машине FreeBSD, на которой svnadminустановлен (и остальные необходимые утилиты). svn версии 1.7.9 (r1462340). Я работаю на Windows 7 x64, использую Tortoise SVN 1.7.7.

Я следовалэто официальное руководствочтобы помочь мне настроить мой сервер и Tortoise SVN, но у меня возникли проблемы с настройкой.

Я сгенерировал пару закрытых/открытых ключей и добавил их в ~/.ssh/authorized_keysфайл моего сервера и в конфигурацию Putty соответственно. Я могу подключиться к удаленной машине с помощью putty и моего закрытого ключа.

Я также попытался настроить Tortoise SVN для выполнения той же задачи, и я подключаюсь к:

svn+ssh://myBSDusername@it2svn/somerepo

Где it2svnимяработающийПрофиль подключения Putty, а также somerepoрепозиторий находится в корне моего репозитория ( ~/svnroot/somerepo).

Проблема, которая возникаетзаключается в том, что Tortoise SVN запрашивает парольную фразу моего ключа, и независимо от того, сколько раз я ввожу ее правильно, диалоговое окно ввода пароля закрывается на 1-2 секунды, после чего снова запрашивает парольную фразу.Там даже не сказано, что это неправильно., он просто продолжает спрашивать у меня пароль снова и снова.

Если я намеренно введу неправильную парольную фразу, мне снова ее предложат ввести.немедленно, без задержки в 1-2 секунды, которая возникает при вводе правильного. Диалоговое окно все еще не говорит, что это неправильно, хотя я ввожу бессмыслицу. Это может быть ошибка на их стороне, но это все еще не объясняет, почему мой правильный пароль не принимается.

Конфигурация

Вот содержимое файла authorized_keys(фактическое содержимое ключей удалено):

ssh-dss AAA....FuA== myBSDusername@ems

command="svnserve -t -r ~/svnroot --tunnel-user=svnAuthorDude",no-port-forwarding,no-agent-forwarding,no-X11-forwarding,no-pty ssh-dss AAAA....IFuA== myBSDusername@ems

Важная заметка:в руководстве сказано, что моя «командная» строка должна выглядеть так:

command="svnserve -t -r <ReposRootPath> --tunnel-user=<author>",
     no-port-forwarding,no-agent-forwarding,no-X11-forwarding,
     no-pty ssh-rsa <PublicKey> <Comment>

Но ключ, который я сгенерировал с ssh-keygenиспользованием тех же параметров, что и в руководстве, начинается с ssh-dss, ssh-rsaпоэтому ssh-rsaв моем файле он заменен на dss(очевидно, потому что ключ является ключом DSA, а не RSA).

решение1

Проблема заключалась в использовании парольной фразы в вашей паре ключей, а не в использовании Pageant.

Когда TortoiseSVn подключается к SSH-туннелю, он, похоже, делает несколько отдельных запросов с использованием plink (или TortoisePLink). Каждый раз, когда это происходит, требуется ключ SSH, который должен быть разблокирован, и поэтому происходит запрос пароля.

Если вы не защищаете пару ключей паролем, то нет необходимости спрашивать пароль.

Если вы настроите pageant на загрузку ключа до использования TortoiseSVN, то plink вместо этого получит ключ, уже разблокированный и кэшированный, из pageant. Таким образом, вы можете использовать защищенный паролем ключ и не вводить пароль повторно. Однако вам все равно нужно будет ввести его один раз при добавлении ключа в pageant.

решение2

Я перегенерировал пару ключей с помощью PuttyGen и сделал ее парой ключей RSA2 (в отличие от старых ключей DSA). Я также пропустил защиту своего закрытого ключа парольной фразой, и теперь все (волшебным образом) работает. Я не знаю точно, какое изменение на самом деле исправило проблему, но я надеюсь, что это поможет какому-нибудь будущему разработчику с похожей проблемой.

Вот (соответствующее) содержимое моего пользователя ~/.ssh/authorized_keys:

ssh-rsa AAAA...Wc= rsa-key-20130529

command="svnserve -t -r /user/rest/of/path/svnroot --tunnel-user=someuser",no-port-forwarding,no-agent-forwarding,no-X11-forwarding,no-pty ssh-rsa AAAA...Wc= andrei

Связанный контент