2012-03-05 2 views
6

У нас есть вся сеть Windows, и я пытаюсь получить Tortoise Mercurial и запустить SSH для центрального репо для нашей небольшой команды. Я могу заставить его работать по большей части, но plink/tortoiseplink hang ПОСЛЕ выполнения команд успешно (clone/push и т. Д.)Windows TortoiseHg plink висит ПОСЛЕ клона/нажмите

Я установил Freesshd на нашем сервере Rc2 Widnows 2008 вместе с Tortoise Hg. Я создал сам публичный/закрытый ключ на сервере (имел проблемы, возникающие на клиенте) с использованием PuttyGen. Закрытый ключ Я скопировал на свой клиент и обновил mercurial.ini. Открытый ключ I переименовал и обновил Freesshd, чтобы указать на папку, содержащую открытые ключи. На стороне клиента я зарегистрировал свой закрытый ключ с помощью Pageant, создал сеанс в Putty и указал его на свой закрытый ключ и сохранил его. Когда я использую Putty для первоначального подключения, все начинает странно.

Я получаю командную строку для имени пользователя (нет подсказки для пароля), а в командной строке (после проверки подлинности) я не могу ввести. Возможно, проблема с Putty. Я попробую использовать Tortoise через (TortoisePlink.exe).

В Mercurial.ini у меня есть: [Ui] SSH = "C: \ шпатлевки \ TortoisePlink.exe" -ssh -2 -batch -C -i C: \ Users \ Jude.ssh \ JudePrivate.ppk

Если я использую консоль, я могу клонировать репо, но он зависает ПОСЛЕ того, как все делает. Используя --debug, последняя строка: 3 файла обновлены, файлы O удалены, 0 файлов удалены, 0 файлов не разрешены

Вид того, что я ожидал бы, когда файлы будут получать клоны. Но тогда я ничего не могу сделать. Ctrl+C ничего не делает, и я должен убить процесс. (Что, кстати, затем показывает Ctrl^C в командной строке, а также остальную часть разметки клавиатуры).

Репо клонируется, отображается правильная версия файлов, но окно консоли не закрывается и не возвращает мне контроль.

Если я попытаюсь использовать Hg Workbench, я получаю аналогичную проблему. Я могу клонировать и толкать - это на самом деле происходит - но с помощью графического интерфейса я получаю:

% hg --repository C:\repositories\HgTest push --debug   
ssh://[email protected]:22/d:/repositories/hgtest 
pushing to ssh://[email protected]:22/d:/repositories/hgtest 
running "C:\putty\TortoisePlink.exe" -ssh -2 -batch -C -i 
C:\Users\Jude\.ssh\JudePrivate.ppk [email protected] -P 22 "hg -R d:/repositories/hgtest serve --stdio" 
sending hello command 
sending between command 
remote: 145 
remote: capabilities: lookup changegroupsubset branchmap pushkey known getbundle unbundlehash batch stream unbundle=HG10GZ,HG10BZ,HG10UN httpheader=1024 
remote: 1 
query 1; heads 
sending batch command 
searching for changes 
all local heads known remotely 
no changes found 
sending listkeys command 
checking for updated bookmarks 
sending listkeys command 

Зеленая полоса в верхней части Workbench говорит: «Стремление к SSH: // Jude @ dev01: 22/D:/репозитории/hgtest ... ", как и строка состояния внизу. Я оставил его так все выходные, и когда я вернулся, все было так. Я все еще могу использовать Hg Workbench (вроде), но не могу использовать pull/push/clone. Попытка закрыть Hg Workbench приводит к сообщению (в строке состояния) Sync tab cannot exit, и я не могу закрыть приложение. Killing TortoisePlink.exe (или Plink.exe, в зависимости от того, что я пытаюсь) освобождает приложение, которое я могу использовать, или закрываю его как обычно.

Первоначально я думал, что это проблема с TortoiseHg или TortoisePlink, но загрузка Plink с сайта Putty приводит к тому же.

Для уточнения:
- я могу нажать/клон через SSH и без запроса пароля
- Я могу сделать это с помощью командной строки или Workbench Hg
- Независимо от того, какой метод я использую (или Plink.exe или TortoisePlink.exe), процесс должен быть убит вручную.

программного обеспечения, используемые + версии
Client (Windows Vista 32bit)
Tortoise Hg 2,3 (Merc 2,1, Python 2.6.6)
Plink 0.62
Сервер - (Windows Server 2008 RC2)
FreeSSHd 1.2.4
же Tortoise, как описано выше

Много поисков не дали ничего использования. Я пробовал все предложения, которые я видел (даже если они незначительно связаны), но безрезультатно. Поскольку фактические функции работают, я полагаю, что правильно настроил ключи, SSH, Tortoise и т. Д.

Я надеюсь, что у меня отсутствует простой вариант где-нибудь, но я подозреваю, что он ждет какой-то пользовательской подсказки.

Пальцы скрещены :)

=== UPDATE ===

Я нашел журнал событий для Putty (правой кнопкой мыши окно консоли замазка, вуаля, "Event Log" вариант. После того, как я ве погрузил сессию и щелкнул, я получаю окно консоли и login as: подсказки После ввода своего имени и нажав возвращения, я получаю:.

Reading private key file "C:\Users\Jude\.ssh\JudePrivate.ppk" 
Pageant is running. Requesting keys. 
Failed to get reply from Pageant 
Offered public key 
Offer of public key accepted 
Sent public key signature 
Access granted 
Opened channel for session 
Allocated pty (ospeed 38400bps, ispeed 38400bps) 
Started a shell/command 

и это на данном этапе я в командной строке изменения c:\Windows\system32> и могу 't введите что-нибудь.

=== UPDATE 2 ===

Использование палить я делаю следующее в консоли:

plink -v -ssh [email protected] "cmd /c echo hello"

и, а также всю информацию -v дает, Я см. hello, затем Server sent command exist status 0 и Disconnected: All channels closed. Это то, чего я ожидал бы.

Если я делаю это с черепаховой подкладкой, «tortoiseplink-v -ssh Jude @ dev01» cmd/c echo hello »« Я вижу, что ничего не возвращается и не записывается в окно, и я снова получаю командное приглашение.

Это означает, что SSH работает как псевдоним (dev01). Но должен ли я что-то увидеть при использовании TortoisePlink?

Ввод hg clone --verbose -- ssh://[email protected]/d:/repositories/hgtest C:\repositories\test снова извлекает файлы, копирует их в тестовую папку, но затем не возвращает командную строку. Последняя строка 3 files updated... и т.д.

=== UPDATE 3 ===

кажется hg.exe является порождением FreeSSHd на сервере, и это делает близко/финиш. Когда процесс hg.exe убит на сервере, клиентское (консольное/клонное диалоговое окно) ведет себя и завершает команду изящно.

Для уточнения:

  1. Я использую клон из командной строки или HG Workbench и указать псевдоним репо
  2. Согласно журналам все нормально, я проверка подлинности, файлы снесены через SSH и скопировано в местное репо, указанное мной в 1
  3. В этот момент он зависает - будь то консоль или HG Workbench или правый клик/клон.
  4. Использование Process Explorer на сервере позволяет мне убить hg.exe, порожденная службой FreeSSHd
  5. Как только я это сделаю, клиент говорит: «Команда выполнена успешно».

Итак, теперь это проблема с Tortoise Hg на сервере. Может быть FreeSSHd и черепаха не играют хорошо вместе ... Я предполагаю, что я буду переустанавливать все ...

=== UPDATE 4 ===

Кажется, я не только один с этим вопрос. Я заметил это раньше на SO, но в то время это было неактуально. Тем не менее, теперь у меня такая же проблема: Mercurial over ssh client and server on Windows Эта проблема не была решена (два года назад), так я должен держать этот вопрос открытым?

+0

Http: // ртутный .selenic.com/wiki/AccessingSshRepositoriesFromWindows –

+0

Уже была ссылка с закладкой и последовала за ней. Он устанавливает это хорошо - но не помогает устранить неполадки ... – Jag

+0

ссылка с 2010 года о ** freeSSSHd ** настройки для Mercurial - http://opapao.blogspot.com/2010/02/setting-up-freesshd-to -work-with.html, но может быть уместным каким-то образом –

ответ

2
  1. Прежде всего - читать документы!

    hg help urls 
    Valid URLs are of the form: 
    
    .... 
    
    ssh://[[email protected]]host[:port]/[path][#revision] 
    
  2. Plink использует параметр -l для имени пользователя

  3. Debug успешно SSH-подключения (и использовать путь) с чистым TortoisePlink, удалите все ненужные опции

+0

Я прочитал документы, которые мог найти - я пользователь Windows и поэтому не использую консоль для документации. Во всяком случае, URL-адреса, которые я использую, в порядке. – Jag

+0

@Jag - 1. порт по умолчанию бесполезен в URL-адресе 2. Я сомневаюсь, что определенный путь работает. 3. Вам нужно использовать консоль ** для отладки plink-connection 4. -l options * необходимо * –

+0

Не могли бы вы рассказать мне как 'ssh: // Jude @ dev01: 22/d:/repositories/hgtest' отличается от формата URL, который вы вставили? Я использую -i и задаю секретный ключ - вот почему он работает. Если я удалю его, я получаю «хост не существует, нет подходящего ответа от удаленного hg». 'plink.exe jude @ dev01' изменяет командную строку на' c: \ windows \ system32> ', но я ничего не могу напечатать и мне нужно ctrl + c. 'tortoiseplink.exe jude @ dev01' из командной строки ничего мне не дает. Командная строка остается как 'c: \ putty>' (где я скопировал некоторые связанные с putty exes, чтобы избежать пробелов в путях). – Jag

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