最近借りているサーバのDBに安全につなぐ方法はないものかと
物色している家庭でSSHポートフォワーディングの便利さをようやく理解しました(恥ずかしながら)。
この便利さを自作アプリケーションとかでも応用できるようにMacの起動時に自動で接続して、それを維持し続けるようにしてくれる無料アプリケーション
『Coccinellida - Simple SSH Tunnel Manager for Mac OS X』
(正確にはそのためのterminalコマンドを設定できる)を見付け足ので紹介です。
🚌 ターミナルコマンド
まずはターミナルからSSHのポートフォワーディングをするためのコマンドがこちら。
ssh ログイン名@経由サーバ -L 自分のポート:目的サーバ:目的サーバのポート |
🍮 Coccinellidaを使った設定方法
基本的には次のことをすればいいです。
- Coccinellida - Simple SSH Tunnel Manager for Mac OS X からアプリケーションをダウンロード
- ターミナルと同様の設定をアプリケーションで行う
- 不明な点がある場合 => OSXでCoccinellidaを使ってSSHポートフォワーディングする
- System preference => ユーザーとグループ => ログイン時に自動起動するアプリケーションに追加
これでlocalhostのポートをサーバ内のDBのポートと同じように扱うことができます。
(SSHを使っているので安全に接続、データをやりとりできるはず)
😼 RailsコンソールからサーバDBに接続する場合
これを応用すると、ローカルでRailsコンソールするとリモートのDBに接続するといったことも可能になります。
今回はリモートの環境(remote)を作ります。config/environments/remote.rb
をdevelopmentあたりをコピーして作成。
次にconfig/database.yml
に以下を追加します。
remote: |
たったのこれだけ、あとは普通にローカルで次のコマンドを実行するとリモートのDBにつないで好き勝手できます。
(host
がなかった場合、localのsocketを探しに行ってしまうので、必ずhostは設定してください)
RAILS_ENV=remote bundle exec rails console |
🎳 参考リンク
- OSXでCoccinellidaを使ってSSHポートフォワーディングする | eye4brain
- rails consoleにて、dbをproductionに接続する。 - Qiita
- No One Better: SSHポートフォワーディング
- postgresqlを他ホストからもつなげるようにする - Qiita