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

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

我不断收到此错误,并尝试了网上讨论的几种方法来解决此问题,但没有一个对我有用。我已经设置了 SSH 密钥,因此当我运行它时会自动登录,我也将此用户设置为, 然后我还尝试添加'ssh [email protected]'visudo'newton ALL=(ALL:ALL) ALL''newton ALL=NOPASSWD: /var/www/script.sh'

不幸的是,每次我从 Cygwin 逃跑时我都会回来。我也尝试过添加,但随后它提示我输入密码。ssh [email protected] 'sudo /var/www/script.sh'-t -t

total size is 21209180  speedup is 314.69
sudo: no tty present and no askpass program specified
Sorry, try again.
sudo: no tty present and no askpass program specified
Sorry, try again.
sudo: no tty present and no askpass program specified
Sorry, try again.
sudo: 3 incorrect password attempts
sudo: no tty present and no askpass program specified
Sorry, try again.
sudo: no tty present and no askpass program specified
Sorry, try again.
sudo: no tty present and no askpass program specified
Sorry, try again.
sudo: 3 incorrect password attempts

答案1

您需要有一个可运行的终端sudo,以便它可以提示您输入密码。如果您将命令传递给ssh,它会假定该命令不需要终端并且不会创建终端,除非您传递-t。看SSH 内部的 SSH 失败,并显示“stdin:不是 tty”以获得更详细的解释。

如果使用 仍无法输入密码-t,则问题可能是由 Windows 造成的。 Windows 控制台并不完全模拟 Unix 终端;在这些情况下,Cygwin 应用程序要正确模拟终端可能会遇到一些困难(我对此不确定,请注意)。如果这是问题所在,请ssh在终端模拟器中运行,例如控制台2或 Mintty(包含在 Cygwin 发行版中)——参见在 Windows 7 中通过 Cygwin 使用 shell 的最佳方式

如果您希望 SSH 密码将您的身份验证密码替换为 sudo,那么这种情况不会发生。 Sudo 需要密码(除非您NOPASSWD在 sudoers 文件中添加标签)。请注意,NOPASSWD如果requiretty在 sudoers 文件中设置了该选项,即使使用 ,您仍然需要有一个终端。

如果您希望无密码登录 root 帐户(从安全角度来看,这通常不是一个好主意),请使用 SSH 访问 root 帐户,最好是两跳。看SSH 内部的 SSH 失败,并显示“stdin:不是 tty”(与[email protected][email protected]

答案2

假设您希望为 nodejs 命令/二进制文件启用无密码。

修改visudo

sudo visudo

使用以下行可使命令无需密码。密码是多个命令,每个命令后都有逗号和空格。

<user name> ALL = NOPASSWD: /usr/local/bin/node

前任。sunthara ALL = NOPASSWD: /usr/local/bin/node

在此输入图像描述

答案3

编辑 ssh-server 配置文件并在底部添加:

root# vim /etc/ssh/sshd_config

Match User newton
    PermitTTY yes

答案4

不知道它是否相关,但是当我在 sudoers 文件中包含 '...NOPASSWD: /xyz/script.shl' 时,我收到了该错误消息,直到我将该#!/bin/shellname行包含在文件顶部/xyz/script.shl

相关内容