0

我一直在使用 shelljs 来执行某些命令集。所以我尝试通过 shelljs 通过 ssh 连接到远程 ubuntu 服务器。这是我的 nodejs 文件。

var shelljs = require('shelljs');
shelljs.exec('ssh -i [path/to/pem/file] ubuntu@[taregt_ip]');

但我得到这个错误:

Pseudo-terminal will not be allocated because stdin is not a terminal.

那么如何解决这个问题,或者是否有任何其他实用程序可以使用一个命令连接到 ssh。

编辑:你们发布的链接供我参考,而不是我的问题的副本。

4

1 回答 1

1

SSH 并不总是分配一个伪终端。这在现有答案中进行了解释。您应该添加-tt标志来强制执行此操作。

也就是说,我不会使用shelljsssh。由于您只是在执行本地二进制文件,因此此解决方案 a) 不可移植,并且 b) 将不知道如何解析错误或处理意外输出。我过去曾在类似的项目中使用过ssh2,因为它有一个交互式 SSH 选项,可以很容易地从 SSH 连接创建流(STDOUT 和 STDIN)。

于 2017-12-10T15:07:41.587 回答