Uma credencial criptografada pode ser acessada em uma PSSession?

Uma credencial criptografada pode ser acessada em uma PSSession?

Minha máquina local existe em um domínio em uma floresta separada da floresta que administro. Como resultado, uso extensivamente PSSessions. Embora eu tenha conseguido criptografar minhas credenciais e salvá-las em meu perfil em minha máquina local, tentei criptografar minhas credenciais e salvá-las em meu perfil na máquina remota e usá-las quando estiver dentro de uma sessão do PowerShell. Abaixo está um exemplo:

PS C:\WINDOWS\system32> etsn -computer 192.168.1.2 -cr $mycred

[192.168.1.2]: PS C:\Users\challer\Documents> get-aduser -server dc01.domain.local -filter * -cr $mycred

Depois de inserir este comando, recebo o seguinte pop-up:

"Aviso: um script ou aplicativo no computador remoto 192.168.1.2 está solicitando suas credenciais. Insira suas credenciais somente se você confiar no computador remoto e no aplicativo ou script que as está solicitando."

Uma credencial pode ser criptografada, salva, armazenada em um servidor remoto e acessada de dentro de uma PSSession? Ou uma credencial criptografada armazenada localmente pode ser transmitida para uma PSSession?

Responder1

O problema é o fato de que a sessão remota não consegue ler sua variável local. Você pode definir variáveis ​​facilmente antes de você Enter-PSSessione usá-las posteriormente em uma sessão remota:

$Session = New-PSSession -ComputerName dc01.domain.local -Credential $mycred
Invoke-Command -Session $Session -ScriptBlock { 
    $mycredRemote = $args[0] 
} -ArgumentList $mycred
Enter-PSSession -Session $Session

A partir deste ponto, $mycredRemotecontém suas credenciais.

Responder2

Tente isto, ele inverte o SecureString para texto não criptografado, local e remotamente:

$mycred=Get-Credential 
$remote = ($env:LOGONSERVER).Replace('\\','')
echo $mycred.Username
echo ([System.Runtime.InteropServices.marshal]::PtrToStringAuto(
    [System.Runtime.InteropServices.marshal]::SecureStringToBSTR(($mycred.Password))))

$Session = New-PSSession -ComputerName $remote -Credential $mycred
Invoke-Command -Session $Session -ScriptBlock { 
    $mycredRemote = $args[0] 
    echo $mycredRemote.Username
    echo ([System.Runtime.InteropServices.marshal]::PtrToStringAuto(
    [System.Runtime.InteropServices.marshal]::SecureStringToBSTR(($mycredRemote.Password))))
} -ArgumentList $mycred
Enter-PSSession -Session $Session

informação relacionada