通过 ssh 启动基于远程脚本/终端的程序会出错(打开终端时出错:未知。)

use*_*007 4 ssh

我使用以下命令在 Ubuntu 服务器上直接启动远程脚本/命令:

ssh me@server 'nano my_file.txt'
Run Code Online (Sandbox Code Playgroud)

但是,这会引发错误:

Error opening terminal: unknown.
Run Code Online (Sandbox Code Playgroud)

另一个示例,调用包含上述nano命令的远程脚本会产生相同的错误。

ssh me@server 'open_nano.sh'
Run Code Online (Sandbox Code Playgroud)

当我这样做时ssh me@server 'echo something',我得到something了预期的结果。

怎么了?

use*_*007 8

您将不得不使用该-t标志。

例子:

 ssh -t me@server 'nano my_file.txt'
 ssh -t me@server 'open_nano.sh'
Run Code Online (Sandbox Code Playgroud)

解释来自man ssh

 -t      Force pseudo-tty allocation.  This can be used to execute arbi?
         trary 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.
Run Code Online (Sandbox Code Playgroud)