У нас есть вся сеть Windows, и я пытаюсь настроить Tortoise Mercurial и использовать SSH для центрального репо для нашей небольшой команды. Я могу заставить его работать по большей части, но plink / tortoiseplink зависают ПОСЛЕ успешного выполнения команд (клонирование / push и т. Д.)
Я установил Freesshd на нашем сервере Widnows 2008 rc2 вместе с Tortoise Hg. Я сгенерировал себе открытый / закрытый ключ на сервере (возникли проблемы при генерации на клиенте) с помощью PuttyGen. Закрытый ключ я скопировал на мой клиент и обновил mercurial.ini. Открытый ключ Я переименовал и обновил Freesshd, чтобы он указывал на папку, содержащую открытые ключи.
На стороне клиента я зарегистрировал свой закрытый ключ в Pageant, создал сеанс в Putty, указал его на свой закрытый ключ и сохранил его.
Когда я использую Putty для первоначального подключения, все становится странным.
Я получаю командную строку для имени пользователя (без запроса пароля), и в командной строке (после аутентификации) я не могу набрать.
Возможно проблема с замазкой. Я попробую использовать Tortoise через (TortoisePlink.exe).
В mercurial.ini у меня есть:
[Ui]
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 гласит «Pushing to ssh: // Jude @ dev01: 22 / d: / repositories / hgtest ...», как и строка состояния внизу. Я оставил это все выходные, а когда вернулся, все еще было так. Я все еще могу использовать Hg Workbench (вроде), но не могу использовать pull / push / clone. Попытка закрыть Hg Workbench приводит к сообщению (в строке состояния) Sync tab cannot exit
, и я не могу закрыть приложение. Уничтожение TortoisePlink.exe (или Plink.exe, в зависимости от того, что я пытаюсь) освобождает приложение, которое я могу использовать, или закройте его как обычно.
Сначала я думал, что это проблема с TortoiseHg или TortoisePlink, но загрузка Plink с сайта Putty приводит к тому же результату.
уточнить:
- Я могу нажать / клонировать через SSH и без запроса пароля
- Я могу сделать это через командную строку или Hg Workbench
- Независимо от того, какой метод я использую (или Plink.exe или TortoisePlink.exe), процесс необходимо вручную убить.
Программное обеспечение используется + версии
Клиент (Windows Vista 32bit)
Черепаха Hg 2.3 (merc 2.1, Python 2.6.6)
Плинк 0,62
Сервер - (Windows 2008 server rc2)
FreeSSHd 1.2.4
Та же черепаха, что и выше
Много поисков не принесло пользы. Я перепробовал все предложения, которые я видел (даже если они незначительно связаны), но безрезультатно. Поскольку реальные функции работают, я предполагаю, что я правильно настроил ключи, SSH, Tortoise и т. Д.
Я надеюсь, что где-то пропущен простой вариант, но я подозреваю, что он ожидает какой-то подсказки пользователя.
Скрещенные пальцы:)
=== ОБНОВЛЕНИЕ ===
Я нашел журнал событий для Putty (щелкните правой кнопкой мыши окно консоли замазки, вуаля, опция «Журнал событий». После того, как я загрузил сеанс и нажал кнопку «Открыть», я получаю окно консоли и приглашение 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
И на этом этапе I командная строка меняется на c:\Windows\system32>
и не может ничего печатать.
=== ОБНОВЛЕНИЕ 2 ===
Используя plink Я делаю в консоли следующее:
plink -v -ssh Jude@dev01 "cmd /c echo hello"
и, как и вся информация, которую дает -v, я вижу hello
тогда Server sent command exist status 0
и Disconnected: All channels closed
.Это то, что я ожидаю.
Если я сделаю это с помощью tortoiseplink, `tortoiseplink-v -ssh Джуд @ dev01" cmd / c echo hello "'Я не вижу ничего возвращенного или записанного в окно, и я получаюСнова введите командную строку.
Это означает, что SSH работает как псевдоним (dev01).Но следует ли мне что-то видеть при использовании TortoisePlink?
Ввод hg clone --verbose -- ssh://Jude@dev01/d:/repositories/hgtest C:\repositories\test
снова выбирает файлы, копирует их в тестовую папку, но затем не возвращает командную строку.Последняя строка 3 files updated...
и т. Д.
=== ОБНОВЛЕНИЕ 3 ===
Кажется, что hg.exe порождается FreeSSHd на сервере, и он закрывает / завершает работу.Когда процесс hg.exe убит на сервере, клиент (диалоговое окно консоли / клона) ведет себя хорошо и завершил выполнение команды.
Чтобы уточнить:
- Я использую клон изКомандная строка или HG Workbench и укажите псевдоним репо
- По логам все нормально, я аутентифицирован, файлы опускаются через SSH и копируются в локальный репозиторий, указанный мной в 1
- В этот момент он зависает - либо консоль, либо HG Workbench, либо опция щелчка правой кнопкой мыши / клонирования.
- Использование Process Explorer на сервере позволяет мне уничтожить hg.exe, созданный службой FreeSSHd
- Как только я это сделаю, клиент скажет «команда выполнена успешно».
Итак, теперь, похоже, проблема с Tortoise Hg на сервере.Может быть, FreeSSHd и Tortoise не очень хорошо играют вместе ... Полагаю, я все переустановлю ...
=== ОБНОВЛЕНИЕ 4 ===
Кажется, я нетолько один с этим вопросом.Я видел это раньше на SO, но это не было актуально в то время.Однако теперь у меня возникает та же проблема: Mercurial через ssh-клиент и сервер в Windows Эта проблема не была решена (два года назад), поэтому я должен оставить этот вопрос открытым?