关于 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”确定的操作。
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 密钥认证而不是密码认证。