【js】SSH隧道远程连接mysql

【js】SSH隧道远程连接mysql

1.说明

MySQL被部署在某个机器上,为了安全,需要通过一个跳板机进行访问,该跳板机可以有ssh访问,给了一个私钥Key文件和一个通行短语,如果是Python,可以paramiko库跳转连接,相关代码可以参考之前的文章,【python】SSH隧道远程连接mysql

本文是通过nodejs实现,由于我在网上没有找到类似的代码,故自己搞出来之后记录一下,也希望能帮到有跟我一样需求的同学

2.相关模块

因为环境用的是nodejs,所以可以直接使用npm安装就行,需要mysql2和ssh2这两个模块

npm install mysql2

npm install ssh2

3.代码

使用方式就是,首先通过ssh2连接上跳板机服务器,然后再利用forwardOut()方法转发数据,拿到stream,再传给MySQL就可以连接上了,参考代码如下

const mysql = require('mysql2');

const ssh2 = require('ssh2');

const { readFileSync } = require('fs');

const ssh_config = {

host: '远程IP',

port: 13102,

username: 'pan',

privateKey: readFileSync("E:\\panmeibing\\dingding\\key"),

passphrase: "PQ@L",

}

const mysqlConfig = {

host: '远程IP',

port: 3306,

user: 'pan',

password: '4N3X5l',

database: 'walletdb3'

}

const sshClient = new ssh2.Client();

sshClient.connect(ssh_config)

sshClient.on('error', (err) => {

console.log("connect ssh error:", err)

})

sshClient.on('close', () => {

console.log("connect ssh close")

})

sshClient.on('ready', () => {

console.log("connect ssh success")

sshClient.forwardOut(

ssh_config.host,

ssh_config.port,

mysqlConfig.host,

mysqlConfig.port,

(err, stream) => {

if (err) {

console.log(`ssh forward err: ${err}`)

return

}

// 连接跳板机之后该连接MySQL了

mysql_operate(stream)

}

)

})

function mysql_operate(stream) {

const mysqlConnection = mysql.createConnection({

stream: stream,

// 使用了ssh的steam就不需要指定MySQL的IP端口了

// host: ssh_config.host,

// port: ssh_config.port,

user: mysqlConfig.user,

password: mysqlConfig.password,

database: mysqlConfig.database,

});

// 执行SQL代码

mysqlConnection.query('select * from coin_token limit 1;', (err, rows, fields) => {

console.log('err:', err)

console.log('rows:', rows)

// console.log('fields:', fields)

});

mysqlConnection.end(() => {

console.log("mysql end")

sshClient.end(); // 如果不再使用记得关闭ssh连接

});

}

相关推荐

2025天水围门票,香港天水围游玩攻略,天水围游览攻略路线/地址/门票价格
购物软件APP哪个能保证正品
best365官网体育投注

购物软件APP哪个能保证正品

📅 07-01 👁️ 4798
为什么借呗之前可以一次借10万,现在只能一次借4万?
一亿元人民币有多少吨?这里告诉你答案
best365官网体育投注

一亿元人民币有多少吨?这里告诉你答案

📅 07-13 👁️ 4954
微信自动下线怎么回事?教你几招快速解决问题!
best365官网体育投注

微信自动下线怎么回事?教你几招快速解决问题!

📅 07-16 👁️ 8128
十大热门免费主题美化软件盘点
bt365网站

十大热门免费主题美化软件盘点

📅 07-06 👁️ 2730