オンプレミス環境からプライベートサブネット内のOCI(Oracle Cloud Infrastructure)Computeインスタンスに接続する方法はいくつかあります。その中でも、踏み台サーバを経由する方法は最も一般的です。接続方法としては、主に以下の2つのパターンがあります。
方法-1. 二段階のログイン
- 踏み台サーバはLinuxの場合:

- 踏み台サーバはWindowsの場合:

メリット:
✅ 非常にシンプル。
✅ 踏み台サーバーへのログインが必要な作業に適している。
デメリット:
⏳2回のログインが必要で、手間がかかる。
⚠️ 3389番ポートなどをパブリックに公開する必要がある。
🗝️ 接続先がLinuxの場合、秘密鍵を踏み台サーバに配置する必要がある。
NSGの関連設定
| 紐づいているインスタンス | 方向 | ソース・宛先CIDR | プロトコル | 宛先ポート | 説明 |
|---|---|---|---|---|---|
| 踏み台 (Linux) | Ingress | ソース: Client Public IP | TCP | 22 | 接続端末から踏み台へのSSHを許可 |
| 踏み台 (Linux) | Egress | 宛先: 接続先のPrivate IP | TCP | 22 | 踏み台から接続先へのアクセスを許可 |
| 踏み台 (Windows) | Ingress | ソース: Client Public IP | TCP | 3389 | 接続端末から踏み台へのアクセスを許可 |
| 踏み台 (Windows) | Egress | 宛先: 接続先のPrivate IP | TCP | 3389 | 踏み台から接続先へのアクセスを許可 |
| ターゲット (Linux) | Ingress | ソース: 踏み台のPrivate IP | TCP | 22 | 踏み台からのアクセス(SSH)を許可 |
| ターゲット (Windows) | Ingress | ソース: 踏み台のPrivate IP | TCP | 3389 | 踏み台からのアクセス(RDP)を許可 |
方法-2. SSHポート転送
踏み台サーバは Linux の場合、SSHポート転送の手段もあります。

メリット:
✅ 二段階のログインが不要になり、作業の手間を軽減できる。
✅ 公開する必要があるポートは22番のみで済むため、よりセキュアな接続が可能
✅ 接続先がLinuxの場合、秘密鍵を踏み台サーバに配置する必要がない。
✅ 踏み台サーバをLinuxで構築すれば、Windowsサーバを使用するよりコストを抑えられる。
a) Linux サーバにSSH接続する場合
- Step-1) 踏み台サーバとターゲットVMの秘密キーをローカル端末に保存する。
※、ターゲットVMの秘密キーを踏み台サーバに保存しないことを推奨する。 - Step-2) 次のコマンドを使用してSSHポート転送を実行する。(Tera Termからも実行できるが、個人的にはコマンドの方が好み)
ssh -L 22:<linux_private_ip>:22 opc@<bastion_public_ip> -i C:\Users\<username>\.ssh\<bastion_private_key>- Step-3) 上記のステップが成功したら、別のセッションを開いて、次のコマンドでターゲットに接続する。
ssh localhost -l opc -i C:\Users\<username>\.ssh\<target_private_key>b) Windows サーバにRDP接続する場合
- Step-1) 踏み台サーバの秘密キーをローカル端末に保存する。
- Step-2) 次のコマンドでSSHポート転送を実施する(上記のLinuxの方法と同様ですが、ポートのところを3389に変更してください)。
ssh -L 3389:<windows_private_ip>:3389 opc@<bastion_public_ip> -i C:\Users\<username>\.ssh\<bastion_private_key>- Step-3) 上記のステップが成功したら、ローカル端末からRDPを開いて、ホスト名にlocalhostを入力して接続する。
次のエラーが発生した場合
エラー現象:Step-3を実施すると、上記エラーが表示される。
エラーメッセージ:「既に進行中のコンソールセッションがあるため、リモートコンピューター上の他のコンソールセッションに接続できませんでした。」
原因:ローカルポート番号3389が既に使われています。
対策:次のようにローカルのポートを13389の番号に置き換えてください。
- Step-2)
ssh -L 13389:<windows_private_ip>:3389 opc@<bastion_public_ip> -i C:\Users\<username>\.ssh\<bastion_private_key> - Step-3) ローカル端末からRDPを開いて、ホスト名にlocalhost:13389を入力して接続する。
NSGの関連設定
| 紐づいているインスタンス | 方向 | ソース・宛先CIDR | プロトコル | 宛先ポート | 説明 |
|---|---|---|---|---|---|
| 踏み台 (Linux) | Ingress | ソース: Client Public IP | TCP | 22 | 接続端末から踏み台へのSSHを許可 |
| 踏み台 (Linux) | Egress | 宛先: Private Subnet CIDR | TCP | 22 3389 | 踏み台から接続先へのアクセスを許可 |
| ターゲット (Linux) | Ingress | ソース: 踏み台のPrivate IP | TCP | 22 | 踏み台から接続先へのアクセス(SSH)を許可 |
| ターゲット (Windows) | Ingress | ソース: 踏み台のPrivate IP | TCP | 3389 | 踏み台から接続先へのアクセス(RDP)を許可 |
以上