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を実行し、操作のフィルターがProcess Createの場合、plink.exeが起動したことを確認したら、プロパティを使用して、渡されている実際のコマンドライン全体を確認できます。


6
親愛なる主よ。地球上の誰が...これは非常に多くのレベルの誤りです(PowerShellではありません)。とにかく、あなたは勇気がこれを奈落の底に深く入れるための私の賛成票を持っています。
wvxvw
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.