パブリック・エンドポイントを持たないターゲット・リソースへの制限付きおよび時間制限付きのアクセスを提供するBastionサービスを使って、プライベートサブネットにあるOracle LinuxインスタンスへのSSH接続とWindowsインスタンスへのリモートデスクトップ(RDP)接続してみた。
実施した構成
事前準備
-
OCI チュートリアルを参考に
-
VCN/Public Subnet,Private Subnet/Service Gateway/ルート表/Security Listのネットワークリソースを作成
- Service Gatewayのサービス:「All Services in Oracle Services Network」
- ルート表:作成したService Gatewayへのルート・ルール
-
Seculity List:ソースPublic Subnet CIDR、宛先 TCP:3389ポートのイグレスルール
-
Seculity List:ソースPublic Subnet CIDR、宛先 TCP:22ポートのイグレスルール
-
Private SubnectにComputeインスタンスを作成
- Oracle Linuxのインスタンス
- Windows Serverのインスタンス
-
-
IAMポリシーの作成
- Bastionサービスを使用するために必要な権限
- Bastion、セッション、ネットワークの管理
- ComputeインスタンスのRead
- Computeインスタンス エージェント プラグインのRead
- Work-Requestのinspect
ポリシーの例
Allow group SecurityAdmins to manage bastion in tenancy
Allow group SecurityAdmins to manage bastion-session in tenancy
Allow group SecurityAdmins to manage virtual-network-family in tenancy
Allow group SecurityAdmins to read instance-family in tenancy
Allow group SecurityAdmins to read instance-agent-plugins in tenancy
Allow group SecurityAdmins to inspect work-requests in tenancy
Bastionの作成
Identity & Security > Bastion から Bastion(要塞)の作成をクリック
名前、配置VCN・Public Subnet、CIDRブロック許可リスト(アクセス元)を入力
管理対象SSHセッションの作成
- セッション・タイプ:管理対象SSHセッション
- セッション名:名前
- ユーザ名:ssh接続ユーザ名(Oracle提供Oracle Linuxイメージの場合「opc」)
- コンピュート・インスタンス:接続対象インスタンス
- SSHキーの追加:SSH公開キーの入力
SSHポート転送セッションの作成
作成したBastionにセッションを作成
- セッション・タイプ:SSHポート転送セッション
- セッション名:名前
- 次を使用してターゲット・ホストに接続します:インスタンス名
- コンピュート・インスタンス:接続対象インスタンス(Windows Serverインスタンス)
- ポート:3389
- SSHキーの追加:SSH公開キーの入力
管理対象SSHセッションへの接続
接続対象のセッションのメニューから「SSHコマンドのコピー」を選択
テキスト エディタを使用して、セッションの作成時に指定した SSH キー ペアの秘密キーへのパスでを置換
更新前例
ssh -i <privateKey> -o ProxyCommand="ssh -i <privateKey> -W %h:%p -p 22 ocid1.bastionsession.oc1.ao-tokyo-1.aaaaaa@host.bastion.ap-tokyo-1.oci.oraclecloud.com" -p 22 opc@10.0.1.2
更新前後
ssh -i id_rsa -o ProxyCommand="ssh -i id_rsa -W %h:%p -p 22 ocid1.bastionsession.oc1.ao-tokyo-1.aaaaaa@host.bastion.ap-tokyo-1.oci.oraclecloud.com" -p 22 opc@10.0.1.2
コマンド ラインを使用して、カスタマイズされた SSH コマンドを発行
> ssh -i id_rsa -o ProxyCommand="ssh -i id_rsa -W %h:%p -p 22 ocid1.bastionsession.oc1.ap-tokyo-1.aaaaaa@host.bastion.ap-tokyo-1.oci.oraclecloud.com" -p 22 opc@10.0.1.2
The authenticity of host 'host.bastion.ap-tokyo-1.oci.oraclecloud.com (147.154.235.219)' can't be established.
RSA key fingerprint is SHA256:AAAAAAAAAAAA.
Are you sure you want to continue connecting (yes/no/[fingerprint])?
Warning: Permanently added 'host.bastion.ap-tokyo-1.oci.oraclecloud.com,147.154.235.219' (RSA) to the list of known hosts.
The authenticity of host '10.0.1.2 (<no hostip for proxy command>)' can't be established.
ECDSA key fingerprint is SHA256:AAAAAAAAAAAA.
Are you sure you want to continue connecting (yes/no/[fingerprint])? yes
Warning: Permanently added '10.0.1.2' (ECDSA) to the list of known hosts.
[opc@OracleLinux01 ~]$
SSHポート転送SSHセッションを使用してWindowsインスタンスにRDP接続
接続対象のセッションのメニューから「SSHコマンドのコピー」を選択
テキスト エディタを使用して、セッションの作成時に指定した SSH キー ペアの秘密キーへのパスでを置換、を置換
更新前例
ssh -i <privateKey> -N -L <localPort>:10.0.1.3:3389 -p 22 ocid1.bastionsession.oc1.ap-tokyo-1.aaaaaa@host.bastion.ap-tokyo-1.oci.oraclecloud.com
更新前後
ssh -i id_rsa -N -L 3399:10.0.1.3:3389 -p 22 ocid1.bastionsession.oc1.ap-tokyo-1.aaaaaa@host.bastion.ap-tokyo-1.oci.oraclecloud.com
コマンド ラインを使用して、カスタマイズされた SSH コマンドを発行
> ssh -i id_rsa -v -N -L 3399:10.0.1.124:3389 -p 22 ocid1.bastionsession.oc1.ap-london-1.aaaaaa@host.bastion.ap-tokyo-1.oci.oraclecloud.com
OpenSSH_for_Windows_8.1p1, LibreSSL 3.0.2
debug1: Connecting to host.bastion.uk-london-1.oci.oraclecloud.com [147.154.235.219] port 22.
debug1: Connection established.
<略>
debug1: pledge: network
ターミナルを閉じないでください。
詳細出力 ( -v)を有効にした場合、接続が成功した後の最終メッセージは次のとおりです。
debug1: pledge: network
localhost: でリモートデスクトップ接続を開始
ポート転送の例
ATPへの接続
Oracle SQL Developer などのデータベース クライアントを起動し、localhost:127.0.0.1: に接続
データベース上の既存のユーザーの名前とパスワードを入力します。
MYSQLデータベースへの接続
MySQL Workbench などのデータベース クライアントを起動し、localhost:127.0.0.1: に接続
データベース上の既存のユーザーの名前とパスワードを入力します。
おわりに
Bastionサービスを使い、Public IPアドレスを持たないインスタンスに接続することができた
( Internet Gateway も不要 )