LoginSignup
3
1

More than 3 years have passed since last update.

DVDからSSHトンネルを介してAutonomous Databaseに接続する方法

Last updated at Posted at 2019-09-05

はじめに

Oracle Autonomous Data warehouse(ADW)インスタンスに接続する場合は1522ポートへのアクセスが許可されている必要がありますが(ADWインスタンスへの接続に使用するポートは1522で固定、2019/9時点)、セキュリティの観点で外部へのアクセスを一部のポートに限っているケースがあります。

そのような場合においてOracle Data Visualization Desktop(DVD)からADWにアクセスするために、そのための手段の一つであるSSHトンネルを介した接続方法を記載します。

ちなみに、以下はOracle Data Visualization Desktopを例に記載してますが、他のクライアントツールを利用する場合も同様です。

事前準備

ここではADWインスタンスは作成済みであり、またOracle Cloud Infrastructure(OCI)のComputeインスタンスも作成済みで、ここにSSHサーバを配置することを前提にしています。

■ SSHクライアントのインストール

DVDを使用するクライアントPC(Windows)にSSHクライアントをインストールします。
ここでは、Git BashをインストールしSSHクライアントとします。

Git Bashのインストールは非常に簡単です。公式サイトからパッケージをダウンロードし、数回クリックするだけでインストールできます。

Git Bashをインストールしたら、[スタート]メニューの[Git Bash]アイコンをクリックして、Git Bashの使用を開始できます。 その後、bashターミナルが開き、次のコマンドを実行してbashとSSHクライアントのバージョンを確認できます。

$ bash --version
$ ssh -V

image.png

■ OCI コンピュート・インスタンスへの接続確認

このコンピュート・インスタンスは、クライアントからトラフィックを受信し、すべてのトラフィックをターゲットADWインスタンスに転送するSSHサーバーとして機能します。

以下は、コンピュート・インスタンスに接続する際に必要な情報を用意してください

  • パブリックIPアドレス:OCIのWebコンソール画面を参照し取得します
  • ユーザ名:デフォルトはOPC
  • SSH公開鍵:インスタンス作成時に登録した秘密鍵のペアとなる公開鍵

事前の動作確認

まずポートの制限がかかっていないケースと、ポート制限があるがSSHトンネルを構成していないケースで、それぞれどのような挙動になるかチェックしてみます。

▼ ネットワークが制限されていない場合

ネットワークが制限されていない場合、ADWインスタンスへの接続は問題なく作成できるはずです。

[Connection]を選択
image.png

[Oracle Autonomous Data Warehouse Cloud]を選択
image.png

[Oracle Autonomous Data Warehouse Cloud]を選択
image.png

必要な情報を入力します
image.png

[Client Credentials]は、ADW Webコンソールからダウンロードできるウォレットファイルです。 以下のスクリーンショットを参照してください。
image.png

[Username]は、ADWへの接続に使用するユーザーです。 ここでは、デフォルトのユーザー「admin」を使用します。

[Service Name] は、接続するデータベースサービスです。 選択方針はここにご参照ください。

接続が正常に作成されました。これは予想される動作です!
image.png

▼ SSHポート22のみが開いている場合

テスト目的で、DVDに使用しているクライアントマシンは、Windows 2012 R2を備えたOCIのコンピュート・インスタンスであり、東京レジョンに配置されています。 ADWインスタンスはAshburnレジョンに配置されています。

セキュリティリストのエグレス・ルールを次のように変更して、ポート22を経由する以外のすべての送信トラフィックをブロックします。

image.png

もう一度DVDで接続を作成すると、予想どおり、「Failed to save the connection」というエラーが表示されます。
image.png

ADWインスタンスへの接続のホストとポートは、ウォレットファイルに含まれている tnsnames.oraファイルで指定されているため、これは驚くことではありません。

image.png

設定したエグレス・ルールに従って、ポート22への送信トラフィックのみが許可されます。 ADWインスタンスへの接続を作成しようとすると、クライアント(DVD)は tnsnames.oraファイルに指定されたホストとポートにクエリーを送信します。ポート1522へのリクエストがブロックされるため、明らかに失敗します。

SSHトンネルの作成し接続

それではSSHトンネルを設定してアクセスしてみましょう

■ SSHトンネルの作成

SSHトンネルはGit Bashターミナルを開き、以下のコマンドを実行するだけで開始できます。

$ ssh -i path-to-the-private-key -N -L local-port:target-host:target-port user@SSH-server-IP

上記コマンドを見ると、まだわからずらいですね。下の画像はこのコマンドの各オプションの意味を説明しています。★
image.png

以下は私が実行したコマンドです。
image.png

  • adb.us-ashburn-1.oraclecloud.com:1522 はターゲットホストとターゲットポートです。 すべてのトラフィックがホスト(adb.us-ashburn-1.oraclecloud.com)のポート(1522)に転送されるようにします。

  • opc@SSH-server-IP の部分は、ログオンするSSHサーバーです。

  • 11522はクライアントPC(Windows)上の空ポートです。ここではポート番号11522を使用することにしました。

これで、SSHトンネルの準備が整いました!

クライアントPCで、localhost(127.0.0.1)のポート11522へのトラフィックがSSHサーバーに送信され、サーバーはすべてのトラフィックをターゲットホストに転送します。

尚、このコマンドを実行すると、プロンプトは返らず(ターミナルがハングしているようになる)他のコマンドを発行できなくなりますが、これは正常動作です。SSHトンネルが構築され、今すぐ使用できることを意味します。
尚、オプション -fを使用してトンネルをバックグラウンドに置くことも可能です。

■ SSHトンネルを介したDVDの接続の作成

tnsnames.oraをついて、以下の赤枠で示したようにhostport127.0.0.111522に更新し、クライアントPCのポート11522に対して接続するように記載します。(tnsnames.oraを編集し終わったら、再びzipでフォルダを圧縮します)

image.png

DVDの接続の作成をクリックし、先ほどZip圧縮したフォルダを指定します。
image.png

接続できました!
image.png

SSHトンネルを終了するには

Ctrl + Cを押すか、Git BashターミナルウィンドウでXをクリックします。

参考資料

3
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
1