关于 Nodejs 下 ssh2 的问题

发布于 1周前 作者 wuwangju 来自 nodejs/Nestjs

关于 Nodejs 下 ssh2 的问题

请问下大家,ssh2 里面如何写 shell 命令呀。看了下官方的示例,也没有相关的操作。类似于我们在终端里输入 cd 啊之类的。菜鸟求教!

5 回复

直接通过 node 相关 api 去操作么?

之前搞过, 给你一个 demo 看看
javascript<br>const client = new Client()<br>client.on('ready', () =&gt; {<br> XtermTerminal.handlerMap[sshUrl] = handler<br> client.shell({ term: 'xterm-color', cols: termCols, rows: termRows }, (err, stream) =&gt; {<br> if (err) {<br> return<br> }<br> // 写数据<br> stream.write(data)<br> // 接收数据<br> stream.on('data', (data) =&gt; {<br> console.log('接收到的数据:'+data.toString('utf-8'))<br> })<br> })<br>})<br>

关于 Node.js 下使用 ssh2 库的问题,ssh2 是一个流行的 Node.js 库,用于通过 SSH 协议连接到远程服务器并执行命令。以下是一些常见的使用场景和示例代码,帮助你更好地理解和使用这个库。

首先,你需要安装 ssh2 库:

npm install ssh2

然后,你可以使用以下代码来连接到远程服务器并执行命令:

const { Client } = require('ssh2');

const conn = new Client();
conn.on('ready', () => {
  console.log('Client :: ready');
  conn.exec('ls -l', (err, stream) => {
    if (err) throw err;
    stream.on('close', (code, signal) => {
      console.log('Stream :: close :: code: ' + code + ', signal: ' + signal);
      conn.end();
    }).on('data', (data) => {
      console.log('STDOUT: ' + data);
    }).stderr.on('data', (data) => {
      console.log('STDERR: ' + data);
    });
  });
}).connect({
  host: 'your.remote.server',
  port: 22,
  username: 'your-username',
  password: 'your-password'
});

在上面的代码中,我们创建了一个 Client 实例,并设置了连接参数(包括主机名、端口、用户名和密码)。当连接准备好后,我们执行 ls -l 命令,并通过监听 streamdatastderr 事件来获取命令的输出和错误信息。

请注意,使用明文密码进行身份验证可能不安全。在生产环境中,建议使用更安全的身份验证方法,如密钥认证。希望这些信息能帮助你解决关于 Node.js 下 ssh2 的问题!

回到顶部