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

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

ssh user@computerone.com 'ssh otheruser@computertwo.com' stdin: is not a tty 

登录到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地址。