我想使用 PowerShell 通过 SSH 连接到服务器,然后更改为不同的用户。
为了完成通过 SSH 使用 PowerShell 连接到服务器,我使用SSH 来自 PowerShell 的 SSH.NET 库和How to connect via SSH from powershell。这很棒,并且给了我简单的命令行开关,比如new-sshsession和invoke- sshcommand来使用。
接下来,我想su给不同的用户。当我尝试通过命令行开关执行此操作时,出现错误:standard in must be a tty。
我知道我可以编辑服务器上的安全设置,让我在不处于交互模式的情况下su到用户。但是,我无法在我要连接的所有服务器上更改该设置。
根据我在https://sshnet.codeplex.com/discussions/285853找到的 C# 示例,我整理了:
$server = "server1"
$port = 22
$username = "user1"
$password = "password1"
$ssh = new-object Renci.SshNet.SshClient($server, $port, $username, $password)
$ssh.Connect()
$inputstream = new-object System.IO.MemoryStream
$streamwriter = new-object System.IO.StreamWriter($inputstream)
$outputstream = new-object System.IO.MemoryStream
$streamreader = new-object System.IO.StreamReader($outputstream)
$shell = $ssh.CreateShell($inputstream, $outputstream, $outputstream)
$shell.Start()
$streamwriter.WriteLine("echo hello > tempfile.txt")
$streamwriter.Flush()
$streamreader.ReadToEnd()
$shell.Stop()
运行,我得到输出,例如:
Last login: Fri Nov 8 11:37:45 2013 from 10.XXX.XXX.XXX
[user1@server1 /users/user1]
但是,/users/user1/tempfile.txt
永远不会被写入,我也没有得到任何进一步的输出。
你看到我做错了吗?