0

因此,從機器X我連接到信用A作爲CredSSP的Y,然後我通過信用B傳遞,並且我想用機器Y在機器Y上啓動一項工作B.在遠程CredSSP調用中啓動作業時出現問題

雖然我可以將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秒或東西(也許有些超時),我沒有看到在任務管理器中創建Y上 任何進程(當我用「喲」只是爲了看到在scriptblock睡覺)。

這裏是回來

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

誤差是異常的延伸「後臺進程報告了下面的消息的錯誤:」。沒有內在的感覺。

+0

幾個問題: 您是否將CredSSP作爲客戶端在X上委派給Y? 你是否啓用CredSSP作爲客戶端和服務器上的Y 你如何建立$ Creda和$ CredB – JPBlanc

+0

它花了我的時間,但我重現。 – JPBlanc

回答

0

據我所知,當在遠程腳本中刪除啓動作業的-Credential參數時,所有事情都會順利進行。

CredSSP用於我們希望遠程會話能夠完全訪問網絡資源的情況。那就是所謂的雙重希望情景。

在你的情況下,你在計算機上建立$ credb這個變量包含B的憑證,但是當你給$ credb作爲你的遠程腳本的參數時,它是序列化的,我敢打賭,第二臺計算機不能使用加密該憑證的一面。

Itry重新創建服務器計算機上的憑據,但它也失敗。

0

要使用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的安全字符串,並把它作爲一個變量。

相關問題