我不断收到此错误,并尝试了网上讨论的几种方法来解决此问题,但没有一个对我有用。我已经设置了 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
答案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
。