【问题标题】:Run command sudo bash with WinSCP .NET assembly使用 WinSCP .NET 程序集运行命令 sudo bash
【发布时间】:2015-08-07 00:27:45
【问题描述】:

我正在尝试使用 VB.NET 和 WinSCP 运行命令 sudo bash

我正在使用此代码:

Try
    Dim mySessionOptions As New SessionOptions
    With mySessionOptions
        .Protocol = Protocol.Sftp
        .HostName = "10.5...."
        .UserName = "hereGoesUsername"
        .Password = "hereGoesPassword"
        .SshHostKeyFingerprint = "ssh-rsa 2048 ......"
    End With
    mySession.Open(mySessionOptions)
    Try
        mySession.ExecuteCommand("sudo bash").Check()

最后一行给我一个错误

sudo:不存在 tty,也没有指定 askpass 程序。

我无法输入密码。如果我在 Windows 上使用ssh username@host 之类的命令行,那么它会要求输入密码,我输入然后我可以运行sudo bash 并再次输入密码,但是如何使用 WinSCP 呢?

【问题讨论】:

    标签: .net ssh sudo winscp winscp-net


    【解决方案1】:

    您不能使用 WinSCP 提供密码。阅读technical limitations of WinSCP when executing remote commands

    唯一的选择是允许用户在不提供密码的情况下执行您的命令。

    有关一般建议,请参阅How do I change user after login (e.g. su root)?

    这篇文章是关于允许一般访问的。对于您的特定情况,您可能只能启用特定命令。

    但你并没有真正告诉我们你想要达到什么目标。我想sudo bash 不是最终目标。你宁愿想执行一些命令,对吧?如果您提供更多详细信息,您可能会得到更具体的答案。

    【讨论】:

    • 是的,我想删除一些文件,但我没有权限。当我运行 sudo bash 时,输入密码,然后我可以删除我想要的。
    • 那么你真的不需要sudo bash,而是sudo rm。要限制滥用无密码sudo(如我的答案中的链接中所述),您可以创建一个脚本来执行您想要自动化的有限+重复任务,并将sudo 配置为仅允许该命令。跨度>
    猜你喜欢
    • 2015-09-03
    • 2012-11-20
    • 2012-07-29
    • 1970-01-01
    • 2016-12-14
    • 2012-10-01
    • 2014-04-30
    • 1970-01-01
    • 2020-11-19
    相关资源
    最近更新 更多