リノシス開発者ブログ

株式会社リノシスのエンジニアブログです。

Redash で ssh tunnel 経由でデータソースに接続する

はじめに

リノシスの神谷です。代表やってます。代表の仕事の1つは落ちてるタスクを拾うことです。最近は社内の複数拠点をつなぐネットワークのお仕事とか、データ周りのインフラのお仕事とか、ラズパイ / Coral (Google の方ね) でゴニョゴニョとか、営業用のデモアプリを突貫で作るとか(最近SwiftとXcodeを覚えました)、デモアプリ用のアセットを作るとか(最近フォトショとイラレを覚えました)、色々あります。

閑話休題

踏み台 (ssh tunnel) 経由じゃないと接続できないDB、よくありますよね。

Redashの通常の設定では踏み台経由できないのでサーバ側で設定する方法のメモ。

 

 

方針

autossh というのがあるので、それを使う。autosshは、ssh接続が切断されても自動的に再接続してくれるそう。使い方も ssh と一緒っぽいので楽。

 

手順

autossh をインストールして、ついでに公開鍵も作っておく。

$ sudo apt install autossh
$ ssh-keygen

接続先のホストの authorized_keys に登録しておく。その後、以下のコマンドで接続。

$ autossh -M 0 -f -N -L 172.XXX.XXX.XXX:10001:example.ap-northeast-1.rds.amazonaws.com:5432 ec2-user@fumidai.example.com
$ netstat -aln | grep 10001
tcp        0      0 172.XXX.XXX.XXX:10001     0.0.0.0:*               LISTEN

はい、ちゃんとつながってますね。ここで LISTEN する IP アドレスを localhost にしないのは、Redash が Docker 上で動いているから。localhost にしちゃうと Docker 側から接続できない。(172で始まるアドレスは EC2 のプライベートアドレス)

Redash側でも設定してみて、テストしてつながればOK。

f:id:RenoSys:20191123162658p:plain


うまくいくことを確認したらスクリプト化して、再起動しても autossh が起動するように設定しておく。