процесс plink не заканчивается, если вызывающий пользователь не вошел в систему

Я вызываю plink из кода C#, который работает от имени определенного пользователя Windows. Я звоню плинку, как

plink.exe user@hostname -pw пароль команды

Обычно процесс plink завершается сразу после выполнения команд, но когда пользователь, под которым выполняется код, не вошел в Windows, процесс plink не завершается.

По мере накопления всех этих зомби-процессов наступает момент, когда новые процессы больше не могут создаваться...

Есть идеи, почему это происходит?


person David    schedule 01.06.2011    source источник


Ответы (1)


Это может быть связано с тем, что при первом подключении к новому серверу PuTTY регистрирует ключ хоста в реестре под текущим пользователем, вошедшим в систему (под HKEY_CURRENT_USER). Если этот пользователь не вошел в систему, эта часть реестра может быть недоступна.

Попробуйте переместить ключ в HKEY_LOCAL_SYSTEM. Этот процесс подробно описан здесь: http://xxlinxx.wordpress.com/2009/03/23/set-up-an-ssh-tunnel-as-a-windows-service-using-putty.-plink/

На этой странице есть последнее примечание, которое также может оказаться важным в зависимости от вашего конкретного варианта использования: «Кроме того, если пользователь Windows SYSTEM не может видеть ключ хоста для SSH-соединения, туннель не может быть установлен».

PS: здесь есть еще одна страница здесь, на которой рассказывается о перемещении сертификата в HKEY_USERS.DEFAULT.

person Victor Pikula    schedule 09.06.2011