我一直在使用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。
编辑:你们发帖给我的链接,不是我的问题的副本。答案 0 :(得分:1)
SSH并不总是分配伪终端。这在existing answer中有解释。您应该添加-tt
标志以强制执行此操作。
那就是说,我不会用shelljs
来做ssh。由于您只是执行本地二进制文件,此解决方案a)不可移植,b)不知道如何解析错误或处理意外输出。我过去曾使用ssh2进行类似项目,因为它有一个交互式SSH选项,可以很容易地从SSH连接创建流(STDOUT和STDIN)。