【问题标题】:"Sudo" fails with "sudo requires a tty" when executed from PuTTY command line从 PuTTY 命令行执行时,“Sudo”失败并显示“sudo 需要 tty”
【发布时间】:2016-09-21 18:32:36
【问题描述】:

我正在尝试使用 PuTTY 在远程 CentOS 机器上运行一些命令。我正在使用以下命令:

putty.exe -ssh [IP] -l [user] -pw [password] -m [Script]

[Script] 是一个 .txt 文件,其中包含我要运行的命令。问题是其中一个命令需要sudo,而当 PuTTY 尝试运行它时,我得到一个错误:

sudo 需要一个 tty

让我感到困惑的是,如果我在没有提供脚本的情况下启动会话,然后手动运行脚本中的命令,它就可以正常工作。我试过用-load代替-ssh,但没有任何区别。

出于安全原因,我无法更改sudoers 文件中的requiretty 设置,这是我能找到的唯一解决方案。还有其他选择吗?

【问题讨论】:

    标签: linux ssh putty tty


    【解决方案1】:

    sudo 需要 TTY/交互式会话。

    相反,PuTTY/Plink -m 开关默认使用非交互式会话。

    使用-t switch 覆盖它。

    putty.exe -ssh [IP] -l [user] -pw [password] -t -m [Script]
    

    【讨论】:

    • 我没有意识到 -m 选项可以做到这一点。添加 -t 修复了 sudo 错误。它仍然无法正常工作,但我认为新问题是由于我正在尝试运行的脚本,而不是 PuTTY。谢谢!
    【解决方案2】:

    读取错误:sudo requires a tty。也就是说,一个交互式外壳。您必须找到另一种方法来执行这些特权指令。例如,您可以以 root 身份登录使用基于密钥的身份验证

    【讨论】:

    • 这应该用于测试自动化,所以使用交互式 shell 是行不通的。我将研究基于密钥的身份验证。
    • 从技术上讲,您可以使用密码登录,但这在安全方面是一个非常糟糕的主意。也许这里真正的问题是为什么需要root 访问权限?如果要与某些设备通信,udev 规则就足够了。
    猜你喜欢
    • 1970-01-01
    • 2017-02-06
    • 1970-01-01
    • 1970-01-01
    • 2012-07-29
    • 2012-12-22
    • 2020-08-21
    • 1970-01-01
    • 2013-07-01
    相关资源
    最近更新 更多