将 sudo 与 PowerShell 的 SSH 会话一起使用

Use sudo with SSH-Session from PowerShell

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

但是当我通过 SSH-Session 启动我的 sudo 命令时我有这个错误:

sudo: no tty present and no askpass program specified

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

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

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

谢谢

SSH-Session模块基于SSH.NET library

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

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

  • 要么使用Shell class (SshClient.CreateShell),它隐式请求伪终端。

  • 或使用ChannelSession.SendPseudoTerminalRequest.

  • 显式请求伪终端

或者修改你的 sudoers configuration file 不需要 sudo 的伪终端(顺便说一句,删除 requiretty 选项,默认情况下它是关闭的)。


或者直接使用SSH.NET,没有SSH-Session模块。

查看这些问题以获取一些代码:

  • Execute multiple commands via SSH and PowerShell;
  • PowerShell, read/write to SSH.NET streams.

您现在可以使用微软推送的 Open SSH exe here

启动后 PowerShell 作为管理员

ssh 192.168.1.123 -p 22 -l general03