0

我正在使用posh-ssh连接到我的 ssh 服务器执行一些以su root开头的命令,但我无法成功地将用户切换到 root。

PS C:\> $rootpwdSec = ConvertTo-SecureString $rootpwd -AsPlainText -Force
PS C:\> Invoke-SSHStreamExpectSecureAction -Command 'su ' -ExpectString 'Password:' -SecureAction $rootpwdSec -ShellStream $stream
True
PS C:\> $stream.read();

[root@aaaaaa-test admin]#
PS C:\> Invoke-SSHCommandStream  -SessionId $SessionId -Command 'id'
uid=500(admin) gid=500(admin) groups=500(admin) context=user_u:system_r:unconfined_t
PS C:\>

如何以 root 身份运行我的命令?

4

1 回答 1

2

我在使用 posh-ssh 和 ubuntu 时注意到的是,由于 ExpectString 的原因,我无法使用“sudo su -”sudo 到 root。它期待“(用户名)的[sudo]密码:”而我只是提供“密码:”

$stream = $session.Session.CreateShellStream("PS-SSH", 0, 0, 0, 0, 100)
$user = Invoke-SSHCommand $session -Command "whoami"
$SSHusersName = $user.Output | Out-String
$SSHusersName = $SSHusersName.Trim()
$results = Invoke-SSHStreamExpectSecureAction -ShellStream $stream -Command "sudo su -" -ExpectString "[sudo] password for $($SSHusersName):" -SecureAction $secpas
$stream.Read()

这就是我能够 sudo 到 root 的方式。同样,根据您连接的 *nix 变体,它可能会有所不同。

于 2016-08-02T13:49:13.590 回答