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实现公网访问