当我 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 上的已知主机。
根据
man ssh
:由于您正在运行多个 ssh 会话,因此您将使用多个
-t
's. 它们可以通过做来缩短ssh -tt
。然后,该命令将如下所示强制使用伪 tty,以便您可以输入密码并查看连接提示。希望这可以帮助!
一种解决方案:
我没有直接执行远程命令,而是
xterm -e
在前面添加了一个。以这种方式,似乎正确的变量在这里,并且第二个提示也有效。