执行远程命令时出现 SSH 错误:“stdin: is not a tty”

Posted

技术标签:

【中文标题】执行远程命令时出现 SSH 错误:“stdin: is not a tty”【英文标题】:SSH error when executing a remote command: "stdin: is not a tty" 【发布时间】:2012-09-10 21:50:56 【问题描述】:

我正在尝试使用 ssh 连接到机器一,然后使用 ssh 连接到另一台机器。但是得到这个错误:

ssh user@computerone.com 'ssh otheruser@computertwo.com'

stdin: is not a tty

【问题讨论】:

尝试将-t 标志添加到第一个ssh。顺便说一句,由于您的问题与编程无关,因此superuser.com 可能更合适 @aland 你有理由。使用 -t 选项运行。 【参考方案1】:

登录到 shell 时,远程主机假定连接是由人类用户完成的。因此,有理由期望他们可以控制客户端上的标准。也就是说,用户正在通过键盘在终端上进行输入。如果远程主机检测到用户不是人类(因为输入不是终端 - tty,而是另一个进程),它可能会警告用户这种意外情况。


所讨论的不当行为的演示以及如何避免它(man ssh 并查找 -t 以获得更全面的解释)。

$ ssh -t genja.org 'ssh raptor.lan hostname\; uptime'
host: genja.lan 
raptor
 21:17:27 up 3 days, 15 min,  1 user,  load average: 0.00, 0.00, 0.00
Connection to genja.org closed.

$ ssh genja.org uptime 
host: genja.lan 
 21:17:43 up 12 days, 17:40,  1 user,  load average: 0.30, 0.08, 0.02

...和错误:

$ ssh  genja.org 'ssh raptor.lan hostname\; uptime'
host: genja.lan 
Permission denied (publickey,keyboard-interactive).

你可能想建立一个隧道:

ssh -L 4444:raptor.lan:22 genja.org

然后,在不同的终端上:

ssh -p 4444 localhost will give you a conenction straight to "raptor.lan"

如果远端没有配置 DNS 别名,则使用 IP 地址,例如 192.168.0.11。

【讨论】:

以上是关于执行远程命令时出现 SSH 错误:“stdin: is not a tty”的主要内容,如果未能解决你的问题,请参考以下文章

ssh 远程链接时出现错误提示:WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED

导入tensorflow时出现numpy版本错误

SSH连接时出现Host key verification failed的原因及解决方法以及ssh-keygen命令的用法

Python ssh 远程执行shell命令

执行ssh-add时出现Could not open a connection to your authentication agent

执行ssh-add时出现Could not open a connection to your authentication agent