SSH転送しながらRMySQLでAWS上のDBにつなぐ
社内データを取得する際に踏み台を介してAWS上のDB(MySQL)につなぐ必要が出てきた。
データ取得関数は社内用のパッケージに実装していたのだがこれを少し変える必要がある。
もっと良いやり方ないだろうか。
とりあえず以下メモ。
踏み台接続用のサーバを立ち上げる
TeraTermProを使ってSSHで接続する。SSH接続の設定などは下記参考文献を確認のこと。
sshlogin <-function(){ system('"C:/Program Files (x86)/teraterm/ttermpro.exe" 踏み台のIP /auth=publickey /user=踏み台のユーザ名 /keyfile=keyのパス', wait=FALSE, invisible=FALSE ) }
で、これをパッケージ読み込み時に動かしたいので.onLoad関数に下記のように指定した。
.onLoad <- function(libname, pkgname) { sshlogin() }
RMySQLでつなぐ
localhostが立ち上がった状態で下記のようにしてつなぐ。
hostに"localhost"と指定するのではなく"127.0.0.1"と指定するのがポイントらしい。
library("RMySQL") con <- dbConnect(MySQL(), user=AWSのユーザ名, password=AWSのパスワード, host="127.0.0.1", port=localhostのポート, dbname=DB名)
参考にしたもの
SSH転送(SSH port forwarding)
http://dev.classmethod.jp/cloud/aws/bastion-ssh-on-windows/
http://web.plus-idea.net/2012/08/ssh-port-forward/
Tera term Proの設定
http://www.j-oosk.com/teraterm/port-forward/787/
Tera term Proのショートカット
https://www.softel.co.jp/blogs/tech/archives/2946
RMySQLでつなぐ件
http://qiita.com/hori@github/items/ec2f4f53da08eba62ac6
enjoy!!!