Плинк Windows TortoiseHg зависает ПОСЛЕ клонирования/передачи

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

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

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

В mercurial.ini у меня есть: [у] ssh = "C:\putty\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://Jude@dev01:22/d:/repositories/hgtest
pushing to ssh://Jude@dev01:22/d:/repositories/hgtest
running "C:\putty\TortoisePlink.exe" -ssh -2 -batch -C -i
C:\Users\Jude\.ssh\JudePrivate.ppk Jude@dev01 -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 говорит: "Нажатие на (скрыто)", как и строка состояния внизу. Я оставил это так. все выходные, и когда я вернулся, все было по-прежнему.Я все еще могу использовать Hg Workbench (вроде), но не могу использовать pull/push/clone. Попытка закрыть Hg Workbench приводит к появлению сообщения (в строке состояния) Невозможно выйти из вкладки синхронизации, и я не могу закрыть приложение. Уничтожение TortoisePlink.exe (или Plink.exe, в зависимости от того, что я попробую) освобождает приложение, которое я могу использовать или закрыть как обычно.

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

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

Используемое ПО + версии
Клиент (Windows Vista, 32-разрядная версия)
Черепаха Hg 2.3 (наемник 2.1, Python 2.6.6)
Плинк 0,62
Сервер — (сервер Windows 2008 rc2)
FreeSSHd 1.2.4
Та же черепаха, что и выше.

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

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

Скрестим пальцы :)

=== ОБНОВЛЕНИЕ ===

Я нашел журнал событий для Putty (щелкните правой кнопкой мыши окно консоли putty, вуаля, опция «Журнал событий». После того, как я загрузил сеанс и нажал кнопку «Открыть», я получаю окно консоли и приглашение войти как: .После ввода моего имени и нажатия клавиши «Ввод» я получаю:

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> и я не могу ничего напечатать.

=== ОБНОВЛЕНИЕ 2 ===

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

plink -v -ssh Jude@dev01 "cmd /c echo hello"

и, а также всю информацию, которую дает -v, я вижу hello, затем Сервер отправил команду, существующий статус 0 и Отключено: все каналы закрыты. Это то, что я ожидал.

Если я сделаю это с помощью tortoiseplink, `tortoiseplink-v -ssh Jude@dev01 "cmd /c echo hello"', я не увижу, что в окно ничего не возвращается и не пишется, и снова появляется командная строка.

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

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

=== ОБНОВЛЕНИЕ 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 и Tortoise не очень хорошо работают вместе... Пожалуй, я все переустановлю...

=== ОБНОВЛЕНИЕ 4 ===

Кажется, я не единственный, кто столкнулся с этой проблемой. Я заметил это раньше на SO, но в то время это не имело значения. Однако теперь у меня возникает та же проблема: Mercurial через клиент и сервер ssh в Windows Эта проблема не была решена (два года назад), поэтому я оставлю этот вопрос открытым?

6
задан Community 23 May 2017 в 11:48
поделиться