我使用以下命令在 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
了预期的结果。
怎么了?
您将不得不使用该-t
标志。
例子:
ssh -t me@server 'nano my_file.txt'
ssh -t me@server 'open_nano.sh'
Run Code Online (Sandbox Code Playgroud)
解释来自man ssh
:
Run Code Online (Sandbox Code Playgroud)-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.