2012-09-18 132 views

回答

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别名,请使用IP地址,例如192.168.0.11。