node.js操作远程服务器
一下演示都是在windows上远程操作linux系统
一.利用ssh进行免密码登陆
1.在windows上安装git bash客户端
2.分别在windows上和linux上执行一下命令配置ssh
ssh -keygen -t rsa -C "邮箱地址",邮箱地址可以省略不写ssh-keygen -t rsa,然后一直回车就行了。
windows下:
centos7下:
3.此时在windows /c/Users/YXHY/.ssh下会生成如下两个文件:
同样在linux /root/.ssh下也会生成 这样两个文件:
4.然后再windows和linux上分别执行一下命令:
cat id_rsa.pub>> authorized_keys
这时候就会再windows和Linux上分别生成一个authorized_keys文件,如果你想用windows上的node.js控制liux就把windows上的authorized_keys文件复制到linux的/root/.ssh/下就行了。windows控制哪个服务器,就把windows上的authorized_keys复制到哪个服务器的/root/.ssh/下。
二、使用node.js控制linux
const { readFileSync } = require(fs);
const { Client } = require(ssh2);
const conn = new Client();
conn.on(ready, () => {
console.log(Client :: ready);
//执行命令
/* conn.exec(ls, (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);
});
}); */
//获取目录
/* conn.sftp((err, sftp) => {
if (err) throw err;
sftp.readdir(/home, (err, list) => {
if (err) throw err;
console.dir(list);
conn.end();
});
}); */
//执行多个命令
conn.shell((err, stream) => {
if (err) throw err;
stream.on(close, () => {
console.log(Stream :: close);
conn.end();
}).on(data, (data) => {
console.log(OUTPUT: + data);
});
stream.end(cd /home
ls
touch fff.txt
);
});
}).connect({
host: 10.0.68.131,
port: 22,
username: root,
privateKey: readFileSync(C:/Users/YXHY/.ssh/id_rsa)
});
以上测试命令中有的命令不太好使,比如top,编辑文件命令串等。路过的朋友可以研究研究感谢!
下一篇:
私有Gitlab实现公网访问
