LoginSignup
2
0

More than 1 year has passed since last update.

Oracle Cloud: Bastionで Port Forwarding して SSH多段接続など色々してみてみた

Last updated at Posted at 2022-04-21

Oracle Cloud Infrastructure Bastionを使用すると、パブリック・エンドポイントがないターゲット・リソースに、制約と時間制限付きでアクセスできるようになります。
Bastions (要塞)では、認可されたユーザーが、Secure Shell (SSH)セッションを使用して特定のIPアドレスからターゲット・リソースに接続できます。接続したユーザーは、SSHでサポートされている任意のソフトウェアまたはプロトコルを使用してターゲット・リソースとやり取りできます。たとえば、リモート・デスクトップ・プロトコル(RDP)を使用してWindowsホストに接続したり、Oracle Net Servicesを使用してデータベースに接続します。
ということで、On-PremisesからBastion経由して、SSH, SSH多段接続, Remote Desktop (RDP), Enterprise Manager へ HTTPSブラウザ・アクセス等してみてみます。

■ 構成イメージ

構成04.jpg

■ Bastion(要塞)作成

● 要塞作成

1) OCIコンソール
[アイデンティティとセキュリティ]> [要塞] をクリック
01_Bastion作成01.jpg

2) 要塞の作成画面
[リスト範囲]の[コンパートメント]リストで、要塞を作成するコンパートメントを選択し、[要塞の作成]をクリック

・要塞名: 任意の表示名
・仮想クラウド・ネットワーク: 関連付けるVCNを選択
・サブネット: Private Endpoint IPアドレスを配置するサブネットを選択
・CIDRブロック許可リスト: セッション接続を許可する1つ以上のアドレス範囲(CIDR表記)
・最大セッション存続時間(TTL): 最小値は30分で、180分(3時間)を超えない値を指定

01_Bastion作成03.jpg

3)作成完了

01_Bastion作成04.jpg

■ ① Bastion: Linux-Server へ SSH接続

● セッションの作成

1) Bastion画面
[セッションの作成]をクリック
02_ssh接続01.jpg

・セッション・タイプ: [SSHポート転送セッション]を選択 ターゲット・リソースの特定ポートへのSSHトンネルを作成
・セッション名: 新規セッションの表示名を入力
・次を使用してターゲット・ホストに接続します:
・インスタンスの選択: ターゲット・コンピュートのインスタンス名を選択
・ポート: ターゲット・リソースで接続するポート番号を入力
・SSHキーの追加: セッションに使用するSSHキー・ペアの公開キー・ファイルを指定

● セッションへの接続

1) セッション SSHコマンドのコピー
セッションの「アクション」メニューで、「SSHコマンドのコピー」をクリック
02_ssh接続03.jpg

2) SSHトンネル・コマンドのコピー確認

ssh -i <privateKey> -N -L <localPort>:10.0.0.2:22 -p 22 ocid1.bastionsession.oc1.nrt.amaaaaaassl65iqatr5y4g6mv@host.bastion.ap-tokyo-1.oci.oraclecloud.com

3) SSHコマンドの編集
テキスト・エディタを使用して、を秘密キーへのパスに、を要塞に接続するマシンのローカル・ポートに置き換えます。

ssh -i id_rsa -N -L 10022:10.0.0.2:22 -p 22 ocid1.bastionsession.oc1.nrt.amaaaaaassl65iqatr5y4g6mv@host.bastion.ap-tokyo-1.oci.oraclecloud.com

4) 10022ポートへのSSHトンネルを作成

[shirok@macbook ~]% ssh -i id_rsa -N -L 10022:10.0.0.2:22 -p 22 ocid1.bastionsession.oc1.nrt.amaaaaaassl65iqatr5y4g6mv@host.bastion.ap-tokyo-1.oci.oraclecloud.com

        Use of the Oracle network and applications is intended solely for Oracle's authorized users. The use of these resources by Oracle employees and contractors is subject to company policies, including the Code of Conduct, Acceptable Use Policy and Information Protection Policy; access may be monitored and logged, to the extent permitted by law, in accordance with Oracle policies. Unauthorized use may result in termination of your access, disciplinary action and/or civil and criminal penalties.

5) Linux-ServerへSSH接続
SSHクライアントを使用して、localhost (または127.0.0.1)および指定したローカル・ポート10022に接続します。

[shirok@macbook ~]% ssh -i id_rsa opc@localhost -p 10022

    The authenticity of host '[localhost]:10022 ([::1]:10022)' can't be established.
    ED25519 key fingerprint is SHA256:qFK/vL9MyWYEYBO5AmjJxRhufx8xkQEdJzL57OZAqD0.
    This key is not known by any other names
    Are you sure you want to continue connecting (yes/no/[fingerprint])? yes
    Warning: Permanently added '[localhost]:10022' (ED25519) to the list of known hosts.
    Activate the web console with: systemctl enable --now cockpit.socket

    Last login: Wed Apr 20 16:21:20 2022 from 10.0.255.2

6) SSH接続確認

[opc@Linux-Server ~]$ hostname
    Linux-Server

■ ② Bastion: SSH多段接続(Linux Server - Database Cloud Service )

Bastionを作成したVCN外のインスタンスと接続する場合、SSH多段接続で接続します。
VCN外のインスタンスに対して Bastion セッション 作成しようとすると次のようなエラーが出力されます

You provided an IP address or a compute instance with IP address that is not in the same virtual cloud network configured for the bastion.

Bastion-Error.jpg
ということで多段接続です。

1) 10022ポートへの SSHトンネルを作成
① Bastion: SSH接続(Linux) で使用した 10022ポートへのSSHトンネルを使用

[shirok@macbook ~]% ssh -i id_rsa -N -L 10022:10.0.0.2:22 -p 22 ocid1.bastionsession.oc1.nrt.amaaaaaassl65iqatr5y4g6mv@host.bastion.ap-tokyo-1.oci.oraclecloud.com

        Use of the Oracle network and applications is intended solely for Oracle's authorized users. The use of these resources by Oracle employees and contractors is subject to company policies, including the Code of Conduct, Acceptable Use Policy and Information Protection Policy; access may be monitored and logged, to the extent permitted by law, in accordance with Oracle policies. Unauthorized use may result in termination of your access, disciplinary action and/or civil and criminal penalties.

2) SSH多段接続

多段SSH構文
ssh -i <ssh-Key> opc@<踏み台IP> -p <踏み台Port番号> -t 'ssh -i <Linux-Serverに配置したssh-Key> opc@<2段目サーバIP>'
実行
[shirok@macbook ~]% ssh -i id_rsa opc@localhost -p 10022 -t 'ssh -i id_rsa opc@10.0.10.10'

    Activate the web console with: systemctl enable --now cockpit.socket

    Last login: Wed Apr 20 15:01:26 2022 from 10.0.0.2

3) SSH多段接続確認
Database Cloud Service(DBCS)へ接続できたことを確認

[opc@DBCS ~]$ hostname
    DBCS

■ ③ Bastion: Windows へ Remote Desktop接続

● セッションの作成

1) Bastion画面
[セッションの作成]をクリック

・セッション・タイプ: [SSHポート転送セッション]を選択 ターゲット・リソースの特定ポートへのSSHトンネルを作成
・セッション名: 新規セッションの表示名を入力
・次を使用してターゲット・ホストに接続します:
・インスタンスの選択: ターゲット・コンピュートのインスタンス名を選択
・ポート: Remote Desktop ポート番号 3389を入力
・SSHキーの追加: セッションに使用するSSHキー・ペアの公開キー・ファイルを指定

● 3389 SSHトンネル接続

1) セッション SSHコマンドのコピー
セッションの「アクション」メニューで、「SSHコマンドのコピー」をクリック

2) SSHコマンドのコピー確認

ssh -i <privateKey> -N -L <localPort>:10.0.0.3:3389 -p 22 ocid1.bastionsession.oc1.nrt.amaaaaaassl65iqatr5y4g6mv@host.bastion.ap-tokyo-1.oci.oraclecloud.com

3) SSHコマンドの編集
テキスト・エディタを使用して、を秘密キーへのパスに、を要塞に接続するマシンのローカル・ポートに置き換えます。

ssh -i id_rsa -N -L 13389:10.0.0.3:3389 -p 22 ocid1.bastionsession.oc1.nrt.amaaaaaassl65iqatr5y4g6mv@host.bastion.ap-tokyo-1.oci.oraclecloud.com

● Remote Desktop接続

1) Microsoft Remote Desktop実行
03_RDP接続03.jpg

2) Remote Desktop画面
Add PC をクリックし、localhost (または127.0.0.1)および指定したローカル・ポート 13389 を設定
03_RDP接続04.jpg

3) Remote Desktop接続
03_RDP接続05.jpg

■ ④ Bastion: Enterprise Manager へ HTTPSブラウザ接続

● セッションの作成

1) Bastion画面
[セッションの作成]をクリック

・セッション・タイプ: [SSHポート転送セッション]を選択 ターゲット・リソースの特定ポートへのSSHトンネルを作成
・セッション名: 新規セッションの表示名を入力
・次を使用してターゲット・ホストに接続します:
・インスタンスの選択: ターゲット・コンピュートのインスタンス名を選択
・ポート: Enterprise-Manager ポート番号 7799を入力
・SSHキーの追加: セッションに使用するSSHキー・ペアの公開キー・ファイルを指定

04_EM接続01.jpg

● 7799 SSHトンネル接続

1) セッション SSHコマンドのコピー
セッションの「アクション」メニューで、「SSHコマンドのコピー」をクリック
04_EM接続02.jpg

2) SSHトンネル・コマンドのコピー確認

ssh -i <privateKey> -N -L <localPort>:10.0.0.4:7799 -p 22 ocid1.bastionsession.oc1.nrt.amaaaaaassl65iqatr5y4g6mv@host.bastion.ap-tokyo-1.oci.oraclecloud.com

3) SSHトンネル・コマンド編集と実行
テキスト・エディタを使用して、を秘密キーへのパスに、を要塞に接続するマシンのローカル・ポート17799 に置き換えます。

[shirok@macbook ~]% ssh -i id_rsa -N -L 17799:10.0.0.4:7799 -p 22 ocid1.bastionsession.oc1.nrt.amaaaaaassl65iqatr5y4g6mv@host.bastion.ap-tokyo-1.oci.oraclecloud.com
 
    Use of the Oracle network and applications is intended solely for Oracle's authorized users. The use of these resources by Oracle employees and contractors is subject to company policies, including the Code of Conduct, Acceptable Use Policy and Information Protection Policy; access may be monitored and logged, to the extent permitted by law, in accordance with Oracle policies. Unauthorized use may result in termination of your access, disciplinary action and/or civil and criminal penalties.

● HTTPSブラウザ接続

  1. ブラウザ接続
    https://localhost:17799/em で接続
    04_EM接続03.jpg

■ Tips

● Proxy経由接続

Proxy使用してInternet接続している場合、次のように SSHトンネル・コマンドに -o ProxyCommand オプションで Proxy URL を追加して接続します。

  -o ProxyCommand='nc -X connect -x <Proxy-URI>:80 %h %p'

■ 参考

・Oracle Cloud Infrastructure Bastion製品機能:Oracle Bastion
・Oracle Cloud Infrastructureドキュメント: 要塞ドキュメント
・アーキテクチャ・センター: Bastionサービスを使用したプライベート・サブネット内のリソースへのアクセス
・FAQ: Oracle Cloud Infrastructure Bastion Serviceに関するよくある質問
要塞のトラブルシューティング

2
0
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
2
0