当我 ssh 到另一台主机hosta
,然后连接到另一台主机时hostb
,一切正常。两台主机目前都需要密码。
但是,当我尝试快捷方式此中间主机并将下一个 ssh 作为参数时,我得到了经常被提及错误:
$ ssh -X hosta ssh1 -X -1 login@hostb
Pseudo-terminal will not be allocated because stdin is not a terminal.
ssh_askpass: exec(/usr/bin/ssh-askpass): No such file or directory
Permission denied, please try again.
ssh_askpass: exec(/usr/bin/ssh-askpass): No such file or directory
Permission denied, please try again.
ssh_askpass: exec(/usr/bin/ssh-askpass): No such file or directory
Permission denied.
这一切似乎与进一步传递的环境变量有关。
这里的 ssh 期望什么?我该如何修复?
并且,我已经将hostb添加到hosta上的已知主机中。
答案1
根据man ssh
:
-t Force pseudo-terminal allocation. This can be used to execute
arbitrary screen-based programs on a remote machine, which can be
very useful, e.g. when implementing menu services. Multiple -t
options force tty allocation, even if ssh has no local tty.
由于您正在运行多个 ssh 会话,因此您将使用多个-t
。它们可以通过执行 来缩短ssh -tt
。然后,该命令将如下所示,以强制使用伪 tty,以便您可以输入密码并查看连接上的提示。
ssh -tt -X hosta ssh1 -X -1 login@hostb
希望这可以帮助!
答案2
解决方案:
我没有直接执行远程命令,而是xterm -e
在前面添加了一个。这样看来,正确的变量就在这里,而且第二个提示也起作用了。