npmのtunnel-sshを利用してSSHポートフォワーディングする

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 6 times, 1 visits today)

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です