SSH не работает, когда вызывается в службе Windows - PullRequest
4 голосов
/ 26 марта 2011

Я звоню cmd файлу, который вызывает ssh для связи с машиной Linux.Для этого я использую класс .NET Process.Но при вызове внутри службы Windows вызов завершается неудачно со следующей ошибкой:

C:\test>ssh -o StrictHostKeyChecking=no -i private_linux_key user@host "ls" 
      0 [main] ssh 9496 fhandler_base::dup: dup(some disk file) failed, handle 0, Win32 error 6
dup() in/out/err failed

Все работает, когда я запускаю приложение как консольное приложение.

Какая возможная причина этой ошибки и как ее исправитьэто?

РЕДАКТИРОВАТЬ Все службы Windows должны сделать - каким-то образом убить предопределенного демона на Linux-машине

Спасибо

РЕДАКТИРОВАТЬ

Подобная проблема описана там: http://www.velocityreviews.com/forums/t714254-executing-commands-from-windows-service.html

Ответы [ 2 ]

6 голосов
/ 16 мая 2011

Возможно, этот пост сэкономит кому-то время на борьбу с подобной проблемой. Я наконец нашел решение, которое работает для меня. Это ssh -n ключ

Так что вместо

ssh -o StrictHostKeyChecking=no -i private_linux_key user@host "ls"

Я использовал

ssh -n -o StrictHostKeyChecking=no -i private_linux_key user@host "ls"

Это все еще похоже на волшебство, но оно работает!

0 голосов
/ 26 марта 2011

разве это не проблема с учетными данными доступа?

при запуске вашей программы в виде консольного приложения вы используете права доступа вошедшего в систему пользователя.однако служба Windows выполняется в специальной учетной записи пользователя (обычно «СИСТЕМА»), и поэтому ей не предоставляются те же права доступа.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...