将 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
在我的 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