在我的 Windows 计算机上,我在 PowerShell 上使用 SSH-Session 模块,并且我想使用
sudo
以便在我的服务器中执行特殊命令。
但是当我通过 SSH 会话启动
sudo
命令时,出现以下错误:
sudo:不存在 tty 且未指定 Askpass 程序
我不想使用 PuTTY 或
ssh
命令,所以参数 -l
不是问题!
如果可能的话我不想更改 SSH 服务器配置。
我想知道如何在PowerShell中强制伪分配tty?
谢谢
SSH-Session
模块基于SSH.NET库。
SSH.NET 库确实支持伪终端分配,但
SSH-Session
模块未公开该功能。
您必须修改
SSH-Session
代码才能使其可用。
要么使用
Shell
类 (SshClient.CreateShell
),它隐式请求伪终端。
或使用
ChannelSession.SendPseudoTerminalRequest
显式请求伪终端。
sudoers
配置文件,使sudo
不需要伪终端(顺便说一下,删除默认情况下关闭的requiretty
选项)。
或者直接使用 SSH.NET,无需
SSH-Session
模块。
请参阅这些问题以获取一些代码: