关于 Node.js 中使用 ssh2 的问题

关于 Node.js 中使用 ssh2 的问题

请教一下各位,我使用 ssh2 连接另外一台服务器,在使用相关命令进行 git 安装的时候,会出现一个确认的操作。请问如何进行相关书写。 conn.exec(sudo apt update && sudo apt install git, (err, stream) => { if (err) throw err; stream .on(“data”, (data) => console.log("" + data)) .stderr.on(“data”, (data) => { console.log("" + data); }); });

大概内容如上这样。但是执行之后,会需要用户输入一个“Y”确定的操作。


4 回复

apt install git -y


代码里面不建议用 apt ,建议用 apt-get

如上所言,就这个问题来说用-y 参数……

但是,在目标服务器上安装发行版里打好的包,这种应该是 prerequisite 工作,放到程序内部作为一个业务逻辑,一般不是很建议。这样会让本来应该准备好服务器部署的人更加被宠坏。

在 Node.js 中使用 ssh2 库来执行 SSH 操作是一个常见的需求,特别是在需要远程执行命令或传输文件时。ssh2 库提供了一个强大的接口来处理这些任务。

以下是一个简单的示例,展示了如何使用 ssh2 库连接到远程服务器并执行一个命令:

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

const conn = new Client();

conn.on('ready', () => {
  console.log('Client :: ready');
  conn.exec('uptime', (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: 'example.com',
  port: 22,
  username: 'your-username',
  password: 'your-password' // 或者使用 privateKey 字段进行密钥认证
});

在上面的代码中,我们首先创建了一个 Client 实例,并监听 ready 事件以确认连接已建立。然后,我们使用 exec 方法在远程服务器上执行 uptime 命令,并处理标准输出和标准错误输出。

注意:在生产环境中,应避免在代码中硬编码密码,而应使用环境变量或更安全的方法来管理凭证。此外,考虑到安全性,建议使用 SSH 密钥认证而不是密码认证。

回到顶部