проблема при запуске задания в удаленном вызове CredSSP - PullRequest
0 голосов
/ 01 сентября 2011

Итак, с машины X я подключаюсь к Y с Creds A как CredSSP, затем я прохожу через Cred B, и я хочу начать работу на машине Y с Cred B.

Хотя яможет RDP в машину Y как X, и успешно создать работу локально как Y, когда я делаю это с удаленным доступом.я получаю ошибку.Вот пример кода для репликации по проблеме с

$sb1 = {param($cred) $cred ; write-host "started"  ; start-job  -Credential $cred -ScriptBlock {"yo"} | Wait-Job | Receive-Job }
$j = invoke-command -ComputerName $compy -Credential $creda -Authentication CredSSP -ScriptBlock $sb1 -argumentlist $credb

его ошибка при получении задания, примерно через 30 секунд или около того (возможно, некоторое время ожидания), и я не вижу никакого процесса, созданного в диспетчере задач нау (когда я помещаю сон в блок скриптов с «йо» только для просмотра).

Вот ошибка, которая возвращается

[localhost] The background process reported an error with the following message: .
    + CategoryInfo          : OpenError: (:) [Receive-Job], PSRemotingTransportException
    + FullyQualifiedErrorId : PSSessionStateBroken

Расширение исключения: «Фонпроцесс сообщил об ошибке со следующим сообщением:. "и нет никаких исключений.

Ответы [ 2 ]

0 голосов
/ 11 мая 2012

Для использования переключателя credssp удаленный компьютер должен быть настроен для его разрешения.Тем не менее, даже если это включено, вы не можете просто передать объект учетных данных на удаленный компьютер.Вы можете легко протестировать его с помощью следующего кода:

$a="hello world"
Will work: Invoke-Command -ScriptBlock {write-host "hello world"} -session $(get-pssession 2)
Will break: Invoke-Command -ScriptBlock {write-host $a} -session $(get-pssession 2)

Что вы можете сделать, это создать безопасную строку, используя ConvertFrom-SecureString и передать ее как переменную.

0 голосов
/ 02 сентября 2011

Насколько я понимаю, все идет хорошо, когда удаляем параметр -Credential для Start-Job в удаленном скрипте.

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

В вашем случае вы строите $ credb на компьютере A, эта переменная содержит учетные данные B, но когда вы передаете $ credb в качестве параметра для вашего удаленного сценария, он сериализуется, и яДержу пари, что второй компьютер не может использовать зашифрованную часть учетных данных.

Пытается воссоздать учетные данные на сервере, но это тоже не удается.

...