OCI Bastionの使い方を図解:マネージドSSHとポート転送の違い、接続元の制限、DBへの接続手順
※当ページにはAmazonアソシエイト等の広告リンクを含みます。
公式ドキュメントで検証最終検証 2026-11-01編集部出典 14件
当ページの解説・制限値・構成図は、一般公開されている Oracle Cloud Infrastructure (OCI) 公式ドキュメント、Oracle Cloud Price List、および Oracle University 公開試験ガイドを一次根拠として検証し、独自のSVG視覚図解として作成しています。
- Bastion Overview
- Creating a Bastion
- Editing a Bastion
- Creating a Managed SSH Session in Bastion
- Creating a Port Forwarding Session in Bastion
- Connecting to Sessions in Bastion
- Connecting to a Port Forwarding Session
- Managed SSH Session Creation Failed
- Bastion IAM Policies
- Securing Bastion
- Managing Plugins with Oracle Cloud Agent
- Configure Network Access with Private Endpoints
- Always Free Resources
- AWS Systems Manager Session Manager
1. Bastionの全体像:入口を接続元と時間で絞る
Bastionは、公開エンドポイントのない対象へ、時間を限って接続するためのサービスです。Oracleが管理するので、自分でOSを更新する踏み台サーバーとは違い、Bastion自体にSSHでログインして管理することはありません。1つのBastionは1つのVCNに対応し、別のVCNの対象には届きません。
図1は、今回の経費申請アプリに当てはめた経路です。Bastionの接続先サブネットを private-app にして、Compute 2台と private-db のAutonomous AI Databaseへ届く形にしました。
- 接続元の確認:許可リストにないIPからはセッションに接続できません。
- 期限つきのセッション:作成したセッションの秘密鍵を持ち、有効な時間内だけ通れます。
- Computeへ:受ける側のNSGで、BastionのプライベートIPからのTCP 22を許可します。
- DBへ:ポート転送のセッションを使い、DB側のNSGでBastionのIPからの受信を許可します。
AWSのSession Managerとの違い
AWSのSession Managerは、受信ポートを開けず、SSH鍵も管理せずに接続できる点を特長としています。OCI Bastionの方式はこれと異なり、セッションごとのSSH鍵と、対象側の受信ルールが必要です。同じ感覚で設定すると、受信ルールの不足でつまずきます。
2. セッションの方式:マネージドSSHとポート転送
セッションの方式は3つあります。対象の種類で選びます。Computeへログインするならマネージドセッション、DBへ接続するならポート転送です。
- 共通:どちらも鍵と接続元のIPの両方が要り、接続先はBastionのIPからの受信を許可します。
- SOCKS5:3つ目の方式です。接続先をクライアント側で動的に決めるので、小規模な構成では必要になるまで有効にしません。
表1:Bastionのセッション方式の比較
| 方式 | 主な用途 | 対象に必要なもの | 今回の構成での使い方 |
|---|---|---|---|
| マネージドSSH | Linuxのインスタンスへログイン | Linuxのプラットフォーム・イメージ、OpenSSHサーバー、Oracle Cloud Agent、Bastionプラグイン | Compute 2台の保守 |
| SSHポート転送 | 特定のIPとポートへTCPをつなぐ。RDP、Oracle Net Services、MySQLなど | OpenSSHサーバーとOracle Cloud Agentは不要 | 管理者のPCからDBへ接続 |
| 動的ポート転送(SOCKS5) | クライアント側で接続先とポートを決める | Bastion作成時に Enable FQDN Support and SOCKS5 を有効にする | 今回は使わない |
3. 接続元のCIDRとセッション時間の上限
Bastionの守りは、接続元と時間の2つです。鍵を持っているだけでは接続できず、許可されたIPから接続する必要があります。
表2:Bastionで絞る設定(2026-11-01確認。最新は公式で確認)
| 設定 | 決まり | 今回の決め方 |
|---|---|---|
| CIDR block allowlist | CIDR形式で最大20個。狭いほど安全 | 管理者の接続元だけを /32 などで書く。例:203.0.113.10/32 |
| Maximum session time-to-live(Bastion) | 30分以上180分以下。このBastionのセッションの上限になる | 作業に足りる短い時間にする。例:60分 |
| Maximum session time-to-live(セッション) | 30分以上180分以下で、Bastionの上限を超えられない。作成後は変更できない | 作業ごとに作り、終わったら期限前でも削除する |
4. 作る前に確認するもの:権限、ルート、エージェント
つながらない原因の多くは、この節の4点にあります。セッションを作る前に順に確かめます。
管理者の権限
Bastionは security、Computeは app、サブネットは network に置く想定です。公式の例は同じコンパートメントに置く前提なので、次のように置き場所を分けて書きました。グループ名の ops-admins は例です。
Allow group ops-admins to use bastion in compartment security
Allow group ops-admins to manage bastion-session in compartment security
Allow group ops-admins to read instances in compartment app
Allow group ops-admins to read instance-agent-plugins in compartment app
Allow group ops-admins to read vnic-attachments in compartment app
Allow group ops-admins to read vnics in compartment app
Allow group ops-admins to read vcn in compartment network
Allow group ops-admins to read subnets in compartment network
Bastion自体を作る人には、manage bastion-family に加えて、対象VCNのコンパートメントでネットワークの権限が要ります。公式の例は manage virtual-network-family です。特定のComputeと特定のOSユーザーに絞りたいときは、target.resource.ocid と target.bastion-session.username の条件を使えます。
ルートとゲートウェイ
Bastionの作成には、VCNのService Gatewayとそのルートが前提です。マネージドSSHセッションには、Service Gateway、Internet Gateway、NAT Gatewayのいずれかとルートが必要です。今回の private-app のルート表は、VCNの記事の表2のように次の2行を入れます。
All NRT Services in Oracle Services Network→ Service Gateway0.0.0.0/0→ NAT Gateway
Bastionプラグイン
Bastionプラグインは、Oracle Cloud Agentが動いていても既定では有効になっていません。インスタンスの詳細にある Oracle Cloud Agent タブで、Bastionのスイッチを Enabled にします。反映に最大10分かかることがあります。ポート転送だけなら、この設定は不要です。
受信ルール
公式の手順はSecurity Listの例です。今回の構成はNSGで層ごとに絞るので、同じ内容をNSGの受信ルールに書きます。BastionのIPは、詳細画面の Private endpoint IP address で確かめます。
表3:対象側に足す受信ルール
5. 手順:Computeへログインし、DBへポートを転送する
Bastionを作る
- Bastions の一覧で Create bastion を選びます。
- 名前を入れ、対象のVCNと、接続先サブネットに
private-appを選びます。 - CIDR block allowlist に管理者の接続元を入れます。
- Advanced options で Maximum session time-to-live を設定します。
- Create bastion を選びます。
マネージドSSHでComputeへログインする
-
新しい鍵ペアを作ります。
ssh-keygen -t rsa -b 4096 -f ./bastion-session-keyOpenSSH 8以降のクライアントでは、既定でRSAの鍵ペアが使えません。公式の案内どおり、SSHの設定に次を足します。全ホストに効く例なので、作業後は外します。
Host * HostkeyAlgorithms +ssh-rsa PubkeyAcceptedAlgorithms +ssh-rsa -
Bastionの詳細で Sessions を開き、Create session を選びます。
-
Managed SSH session を選び、次を入れます。Username は
opc(多くのプラットフォーム・イメージの既定)、Compute instance は対象の1台、Add SSH key は公開鍵です。 -
作成後、セッションの Actions メニューから Copy SSH command を選びます。
-
コマンドの
<privateKey>を秘密鍵のパスに置き換えて実行します。
ポート転送でDBへ接続する
Autonomous AI Databaseにはエージェントを置けないので、SSH port forwarding session を使います。DBのプライベートIPは詳細画面で確かめます。
- Create session で SSH port forwarding session を選びます。
- IP Address にDBのプライベートIP、ポートに
1521を入れ、公開鍵を追加します。 - Copy SSH command でコマンドを取り、
<privateKey>と<localPort>を置き換えて実行します。形は次のとおりです。
ssh -i <privateKey> -N -L 1521:<db_private_ip>:1521 -p 22 <bastionHost>
このコマンドは終了しません。開いたまま、別の画面でSQLクライアントから localhost の1521番へ接続します。題材はTLS接続なので1521です。mTLSなら1522にします。
つながらないときの確認
表4:よくある症状と確認する場所
| 症状 | 確認する場所 |
|---|---|
マネージドSSHの作成が数分後に失敗し、プラグインが INVALID | VCNのゲートウェイと、サブネットのルート表 |
| マネージドSSHの作成が失敗する | Oracle Cloud AgentとBastionプラグインの状態、OSユーザー名、sshd_config |
| SSHコマンドが接続できない | 自分のIPが許可リストにあるか、セッションの期限、秘密鍵 |
| Bastionまでは通るが対象に届かない | 対象のNSGとSecurity Listの受信ルール、ポート番号 |
次に読むページ
- ロードマップの次の項目:OS更新の通信を確かめる
- パスワードをコードに書かない方法:VaultとObject Storageを小さく使う
- 全体の順番:学習ロードマップ
よくある質問(FAQ)
- OCI Bastionの利用料はかかりますか?
- 公式の説明では、Bastionに費用はかからず、無料のアカウントでも有料のアカウントでも使えます。ただしサービス制限はあります。2026-11-01に確認しました。最新は公式で確認してください。
- セッションの時間は延ばせますか?
- 作成したセッションで編集できるのは表示名だけです。時間が足りないときは新しいセッションを作ります。設定できる時間は30分以上180分以下で、Bastion側の上限を超えられません。
- Windowsのインスタンスにも使えますか?
- マネージドSSHセッションはLinuxのプラットフォーム・イメージが対象で、Windowsには対応していません。ポート転送セッションならRDPの3389番へつなげます。