5
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

[Oracle Cloud] OCI Bastionサービスを使って、Windows端末からDBCSに社内Proxy経由で接続する

Posted at

はじめに

2021年5月にOCI Bastionサービスがリリースされました。

リリース・ノート

Oracle Cloud Infrastructure Bastion provides restricted and time-limited access to target resources that don't have public endpoints.

OCIコンソール上「要塞」と訳されていますが、いわゆる「踏み台サーバ」のサービスです
image.png

このサービスを利用することで、プライベート・セグメントに配置しているComputeインスタンスなどに対して、インターネットからアクセスすることができるようになります。接続元IPアドレスの制限や、セッションの持続時間を指定でき(*)、必要な時に特定のIPからのみ接続できる構成にできるため、セキュアです。

そして、何より無料です!
image.png

(*)ただし、現在はセッションの最大持続時間を30分から3時間の間で指定する必要があるため、3時間を超える作業を実施する場合には使いずらいかもしれません。

OCI Bastionサービスは、以下図の赤枠のように、SSHポートフォワードの機能も提供しているため、SSH以外のサービスへの接続にも利用できます。

image.png

ただし、社内LANからOCI Bastionを使ってアクセスしようとする場合、端末とBastionの間に社内Proxyが介在することが多いと思います。

image.png

そして、「要塞」サービスとセッションの作成後に接続用のコマンドを確認すると、下の画像のような画面がでてくるのですが、「あれ?Windowsだとどうすれば?社内Proxyの指定をどうすれば?」という疑問がわくと思います。私がそうでした。

image.png

がんばって試したところ、Tera Termを使ったやり方で成功したので参考情報として残しておきます。(Windows標準のsshを使用したやり方は、Proxyの指定方法がわからず挫折しました。。)

※ 公式マニュアルに記載されているやり方ではありません。私個人の環境で試した結果であることにご留意ください。

前提

OCI Bastionサービスのセッションには、「管理対象SSH」と「ポート転送」の2種類があります。この記事の対象としているのは、「ポート転送」です。

image.png

「管理対象SSH」を使用する場合、接続先のインスタンス上で、Oracle Cloud AgentのBastionプラグインが稼働している必要があります。そのため、接続対象がComputeでないと使えないと思われます。また、Bastionプラグインはデフォルトは無効化されているため、有効化する必要があります。
( なんでプラグインが必要なの?と思ったのですが、「管理対象SSH」の場合は、セッション作成時に登録した公開鍵を、接続先ホストのauthorized_keysにも登録しているようです。そのためのプラグイン?)

image.png

検証手順

「要塞」の作成

OCI Bastionサービスを使用する場合、「要塞」と「セッション」を作成します。

  • [メニュー]⇒[アイデンティティとセキュリティ]⇒[要塞]を選択
    image.png

  • 「要塞の作成」ボタンを押下
    image.png

  • 以下を入力します

  • 「要塞名」に、任意の識別名を入力します。

  • 「ネットワーキングの構成」で、BastionのプライベートIPが割り振られるサブネットを選択します

  • 「 CIDRブロック許可リスト」に接続を許可するネットワークアドレスを、CIDR形式で入力します。この記事では社内プロキシ経由のアクセスを想定しているため、社内プロキシの送信元グローバルIPアドレスのレンジを指定します。

image.png

・「要塞」の作成完了後、要塞名のリンクを押下します
image.png

・プライベート・エンドポイント(割り振られたIPアドレス)の値を確認します。
image.png

Bastion経由での接続では、接続元IPアドレスが、Bastionのプライベート・エンドポイントIPアドレスになります。そのため、接続先インスタンスのセキュリティ・リストまたはNSGなどにより、プライベート・エンドポイントからのアクセスを許可しておく必要があります。

なお、同画面の「編集」ボタンから、アクセスを許可するCIDRのリストや最大セッション存続時間を編集できますが、最大セッション存続時間に3時間を超える値を設定できません。入力しようとするとエラーになりました。

image.png

「セッション」の作成

続いて、「セッション」を作成します。セッションは最大3時間で破棄されてしまうため、接続のたびに作成する必要があります。

・「セッションの作成」ボタンを押下します
image.png

  • 以下を入力します。
  • 「セッション・タイプ」に"SSHポート転送セッション"を選択します
  • 「セッション名」に任意のセッション名を入力します
  • 「IPアドレス」に、ポート転送先のIPアドレスを入力します。# ここでは、DBCSのIPアドレスを指定しました。
  • 「ポート」に、転送先のポート番号を入力します。# ここでは、SSH接続したいので22と入力しています。
  • 「セッション」に接続する際に使用する鍵ペアを作成し、公開鍵をアップロードします

image.png

  • セッションの作成後、セッションの右端のメニューを押下し、「SSHコマンドの表示」を選択します
    image.png

  • 表示されたコマンドをメモします

image.png

Tera Termを使用した接続

SSHトンネル用のセッションをと、SSHトンネルを使用してターゲットに接続するための2つのTera Termセッションを起動します

SSHトンネル用のセッションの作成

Tera TermのGUIの画面から、Tera Termコマンドラインの/ssh-N相当の指定がどこでやるかわからなかったので、コマンドラインにしました。。
コマンドプロンプトを起動し、以下のコマンドを実行します。

C:\> SET TTERM_EXE=<Tera Termの実行ファイル(ttermpro.exe)のフル・パス>
C:\> SET KEYFILE_PATH=<セッション作成時に指定した鍵ペアの秘密鍵のフル・パス>
C:\> SET LOCAL_PORT=30000
     ※LOCAL_PORTは、1025以上の任意ポートです。
C:\> SET TARGET_IP=<接続先のIP>
C:\> SET TARGET_PORT=<接続先のポート>
C:\> SET BASTION_USER_OCID=<BASTIONホストのユーザ(OCID)>
C:\> SET BASTION_HOST=host.bastion.ap-tokyo-1.oci.oraclecloud.com
C:\> SET PROXY_IP=<社内プロキシのIP>
C:\> SET PROXY_PORT=<社内プロキシのポート>
C:\> %TTERM_EXE% /auth=publickey /keyfile=%KEYFILE_PATH% /ssh-N /ssh-L%LOCAL_PORT%:%TARGET_IP%:%TARGET_PORT% /user=%BASTION_USER_OCID% %BASTION_HOST%:22 -proxy=http://%PROXY_IP%:%PROXY_PORT%

下の図は、「SSHコマンドの表示」からコピーした接続文字列と、各変数に指定する値との対応です。
※ 変数BASTION_USER_OCIDに設定する値は、要塞「セッション」の作成ごとに値が変化するので気を付けてください
image.png

これを実行すると、下の図のように、接続がハングしたようなTera Termの画面が起動します。
image.png

Tera Termの画面起動後に、以下のコマンドを実行して、LOCAL_PORTで指定したポートがリッスン状態になっているかを確認します。指定したポートの状態がLISTENINGと表示されていたら成功です。

C:\> netstat -an |findstr %LOCAL_PORT%
  TCP         127.0.0.1:30000        0.0.0.0:0              LISTENING ★
  TCP         [::1]:30000            [::]:0                 LISTENING

ターゲット接続用のセッションの作成

接続失敗したようなTera Termの画面はそのままにして、もう一つTera Termを起動します。
(ハングしたような状態のTera TermのSSHセッションを経由して、ローカル・ポートへの通信(パケット)をターゲットIPに転送するためです。)

  • 接続先のIPに"localhost"、TCPポートに30000 (SSHトンネル作成時に指定した、LOCAL_PORTの値) を指定します
    image.png

  • ターゲット接続用のユーザ名と秘密鍵のパスを指定します
    image.png

  • ログインできたら成功です!
    image.png

5
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
5
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?