本ブログは、オラクル・クラウドの個人ブログの1つです。
初めに
オンプレミス環境からプライベートサブネット内のOCI(Oracle Cloud Infrastructure)Computeインスタンスに接続する方法はいくつかあります。その中でも、踏み台サーバを経由する方法は最も一般的です。接続方法としては、主に以下の2つのパターンがあります。
方法-1. 二段階のログイン
メリット:
✅ 非常にシンプル。
✅ 踏み台サーバーへのログインが必要な作業に適している。
デメリット:
- 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)を許可 |
踏み台サーバを経由する方法以外にも、さまざまな手段があります。詳細については、次の記事をご参照ください。
プライベート・サブネット内のOCI Computeインスタンスに接続する方法のまとめ
以上