SSHでポートフォワードするのをNode.jsだけで行うことを試してみたのでその際のメモ。
下の例では、local(127.0.0.1)の13306番にアクセスするとSSH接続先のホストから接続できる mysql***.heteml.jp
の3306番にフォワードしている。
npmで公開されている tunnel-ssh を利用するとシンプルにできる。
$ npm install tunnel-ssh --save
SSH接続するための設定とポートフォワードする先の設定、ローカルで接続待ちをするポート番号を指定する。
// tunnel.js var tunnel = require('tunnel-ssh'); var config = { username: 'ssh-hideack', port: 2222, host: 'ssh***.heteml.jp', privateKey:require('fs').readFileSync('/Users/hideack/.ssh/id_rsa'), passphrase: '******', dstPort: 3306, dstHost: 'mysql***.heteml.jp', localHost: 'localhost', localPort: 13306 }; var server = tunnel(config, function (error, result) { if (error) { console.log(error); process.exit(); } console.log('connected'); // これ以降にMySQLクライアント等でlocalhostの13306番に接続する処理を書けばよい });
というメモエントリでした。
(Visited 1,404 times, 1 visits today)