在 PowerShell 中将 sudo 与 SSH 会话结合使用

问题描述 投票:0回答:2

在我的 Windows 计算机上,我在 PowerShell 上使用 SSH-Session 模块,并且我想使用

sudo
以便在我的服务器中执行特殊命令。

但是当我通过 SSH 会话启动

sudo
命令时,出现以下错误:

sudo:不存在 tty 且未指定 Askpass 程序

我不想使用 PuTTY 或

ssh
命令,所以参数
-l
不是问题!

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

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

谢谢

windows powershell ssh powershell-2.0 sudo
2个回答
1
投票

SSH-Session
模块基于SSH.NET库

SSH.NET 库确实支持伪终端分配,但

SSH-Session
模块未公开该功能。

您必须修改

SSH-Session
代码才能使其可用。

  • 要么使用

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

  • 或使用

    ChannelSession.SendPseudoTerminalRequest
    显式请求伪终端。


或者修改您的

sudoers
配置文件,使
sudo
不需要伪终端(顺便说一下,删除默认情况下关闭的
requiretty
选项)。


或者直接使用 SSH.NET,无需

SSH-Session
模块。

请参阅这些问题以获取一些代码:


0
投票

您现在可以使用 Microsoft 推送的 Open SSH exe 这里

启动后

PowerShell
以管理员身份

ssh 192.168.1.123 -p 22 -l general03
© www.soinside.com 2019 - 2024. All rights reserved.