执行远程命令时出现SSH错误:“stdin:不是tty”

时间:2012-09-18 15:34:46

标签: linux bash ssh debian remote-execution

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

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

stdin: is not a tty

1 个答案:

答案 0 :(得分:30)

登录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别名,请使用192.168.0.11等IP地址。