PowerShell을 사용하여 PuTTY를 통해 RHEL 루트 비밀번호를 변경했지만 비밀번호를 무엇으로 변경했는지 모르겠습니다.


8

기본적으로 제목입니다. 내 친구가 Powershell 및 PuTTY를 통해 RHEL 비밀번호를 일괄 변경하는 스크립트를 제공했지만 로그인 할 때 입력 한 새 비밀번호가 작동하지 않습니다. 문제는 특수 문자 중 하나를 이스케이프하지 않는 것입니다. 새 비밀번호에 새 비밀번호가 무엇인지 알 수 없습니다.

내가 사용한 "새 비밀번호"는 다음과 비슷합니다 : a1b2c3d "4e5f6g7

일반 문자열의 보안 문자열을 바꾸거나 SSH 대신 telnet을 패킷 캡처와 함께 사용하여 정확히 무엇을 보내고 있는지 확인하려고했지만 지금까지는 효과가 없었습니다.

System.Management.Automation.PSCredential -argumentlist "root",$newrootPassword
     $newrootPassword2 = Read-Host "Retype new root password" -AsSecureString
     $newrootCredential2 = new-object -typename System.Management.Automation.PSCredential -argumentlist "root",$newrootPassword2


    putty.exe -ssh -pw $oldrootCredential.GetNetworkCredential().Password root@$_

    echo y | plink.exe -ssh -v -pw $oldrootCredential.GetNetworkCredential().Password root@$_ "echo root:'$newrootPassword' | chpasswd" 2>&1 

새 비밀번호가 a1b2c3d "4e5f6g7 일 것으로 예상했지만 로그인시 작동하지 않습니다.

답변:


16

문제는 SecureString을 표준 문자열이 필요한 것으로 전달하려고한다는 것입니다. Password 속성은 SecureString 형식이며 plink에 전달할 수 없으며 System.Security.SecureString으로 변환됩니다 . 암호 변경이 실제로 작동 한 경우 암호가 설정된 것입니다.

SecureString을 plink 명령에 적합한 텍스트 형식으로 변환하려면 여기 에서이 예제와 같은 함수를 사용해야합니다.

function Get-PlainText()
{
    [CmdletBinding()]
    param
    (
        [parameter(Mandatory = $true)]
        [System.Security.SecureString]$SecureString
    )
    BEGIN { }
    PROCESS
    {
        $bstr = [Runtime.InteropServices.Marshal]::SecureStringToBSTR($SecureString);

        try
        {
            return [Runtime.InteropServices.Marshal]::PtrToStringBSTR($bstr);
        }
        finally
        {
            [Runtime.InteropServices.Marshal]::FreeBSTR($bstr);
        }
    }
    END { }
}

Write-Host실제 plink.exe로 테스트하기 전에 명령 줄 값을 출력 하여 명령을 테스트 할 수 있습니다 . 또는 ProcMon 을 실행 하고 Operation is Process Create에서 필터링 한 다음 plink.exe가 시작되면 속성을 사용하여 전달되는 전체 실제 명령 줄을 볼 수 있습니다.


6
친애하는 주님. 지구상에서 누가 ... 이건 너무 많은 수준의 잘못입니다 (YouTube가 아닙니다). 어쨌든, 당신은 용기가 이것을 심연에 깊이 넣을 수있는 나의 공감대를 가지고 있습니다.
— wvxvw
당사 사이트를 사용함과 동시에 당사의 쿠키 정책과 개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.