在PowerShell中使用sudo和SSH-Session

时间:2015-08-28 15:09:26

标签: windows powershell ssh powershell-v2.0 sudo

在我的Windows计算机上,我在PowerShell上使用SSH-Session模块,我想使用sudo来执行我的服务器中的特殊命令。

但是当我通过SSH-Session启动sudo命令时出现此错误:

  

sudo:没有tty存在且没有指定askpass程序

我不想使用PuTTY或ssh命令,因此参数-l不是问题!

如果可能,我不想更改SSH服务器配置。

我想知道如何在PowerShell中强制伪分配tty?

由于

2 个答案:

答案 0 :(得分:1)

SSH-Session模块基于SSH.NET library

SSH.NET库支持伪终端分配,但SSH-Session模块不公开功能。

您必须修改SSH-Session代码才能使其可用。

  • 使用Shell类(SshClient.CreateShell),隐式请求伪终端。

  • 或使用ChannelSession.SendPseudoTerminalRequest明确请求伪终端。

或者修改sudo不要求requiretty的伪终端(删除SSH-Session选项,默认情况下该选项已关闭。

或者直接使用SSH.NET,不使用Dim filterrange as Range, row as Range, cell as Range Dim newWb as workbook Set filterrange = ThisWorkbook.Sheets(yourSheet).Cells(2, ThisWorkbook.Sheets(yourSheet).cells(1, columns.count).end(xltoleft).column) ' get columns e.g. name, state, etc. filterrange.autofilter Field:=3, Criteria1:=Array("BLR" _ , "MAD", "MIA", "NCE", "="), Operator:=xlFilterValues filterrange.AutoFilter Field:=5, Criteria1:="Yes" ' activeconnect filterrange.AutoFilter Field:=6, Criteria1:="=" ' clustername filterrange.AutoFilter Field:=4, Criteria1:= _ "<>*@ora.gmail.com*", Operator:=xlAnd ' e-mail filterrange.AutoFilter Field:=2, Criteria1:=Array( _ "Bangalore", "Honslow", "Madrid", "Miami"), Operator:=xlFilterValues For Each cell In filterrange.CurrentRegion.SpecialCells(xlCellTypeVisible).Rows If Cells(cell.row, 8) = "" Then Select Case Cells(cell.row, 5).Value Case "NCE" Cells(cell.row, 8) = "nce.iis" Case "BLR" Cells(cell.row, 8) = "sin.iis" Case "MAD" Cells(cell.row, 8) = "muc.iis" Case "MIA" Cells(cell.row, 8) = "atl.iis" End Select End If Next cell filterrange.CurrentRegion.SpecialCells(xlCellTypeVisible).Copy Set newWb = Workbooks.Add newWb.Sheets(1).Paste 模块。

有些代码请参阅以下问题:

答案 1 :(得分:0)

您现在可以使用Open SSH exe,由Microsoft here推送。

以管理员身份启动PowerShell

ssh 192.168.1.123 -p 22 -l general03