【发布时间】:2013-11-11 01:26:09
【问题描述】:
我想通过 SSH 连接到服务器,使用 PowerShell,然后更改为其他用户。
为了使用 PowerShell 通过 SSH 连接到服务器,我使用了 SSH from PowerShell using the SSH.NET library 和 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 永远不会被写入,我也没有得到任何进一步的输出。
你知道我做错了什么吗?
【问题讨论】:
标签: c# .net powershell ssh