はじめに
Oracle Cloud Infrastructure(以下OCI)のBastionサービスとは、プライベート環境のリソースに対して、パブリック・エンドポイントを経由せずにセキュアに接続できるサービスです。今回はBastionを使用したSSH接続についてご紹介したいと思います!
事前準備
Bastion作成前に以下の環境が必要となります。・ VCN
・ プライベート・サブネット
・ プライベートに属するリソース(今回は「コンピュート・インスタンス」を使用)
・ SSH鍵
必要であれば、以下のポリシーも付与をしておきます。
(対象ユーザーがAdministrators権限を有している場合は、以下のポリシーの記述は不要です。)
Allow group SecurityAdmins to manage bastion-family 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の作成
OCIコンソールにログイン後、左上のハンバーガーメニューからアイデンティティとセキュリティ
→要塞
をそれぞれ選択します。
Bastionサービスの一覧が表示され、要塞の作成
を選択します。
この時、リージョンとコンパートメントが指定の場所にあるかどうかの確認を行いましょう。
以下の項目をそれぞれ入力後、要塞の作成
を選択します。
・ 要塞名
・ ターゲット仮想クラウド・ネットワーク
・ ターゲット・サブネット(「プライベート・サブネット」を選択)
・ CIDRブロック許可リスト(今回はIPアドレスの制限を行わないので「0.0.0.0/0」と入力)
・ 最大セッション存続時間(TTL)(オプション)
※30分〜3時間まで任意の時間を設定できます。
作成後、状態がアクティブになったら、作成が完了となります。
セッションの作成
続いて、Bastion内のセッションを作成します。先ほど作成したBastionの詳細画面に移動し、セッションの作成
を選択します。
セッションの作成時には以下の項目の入力が必須となります。
・ セッション・タイプ(今回は「SSHポート転送セッション」を使用)
・ セッション名
・ ターゲットのIPアドレス or ターゲットのインスタンス(今回は「ターゲットのインスタンス」を選択)
・ コンピュート・インスタンス
・ ポート(SSH接続なので「22」を入力)
・ SSH鍵(「公開鍵」「秘密鍵」両方)
作成後、状態がアクティブとなったら、作成が完了となります。
セッションの登録
先ほど作成したセッションの三点リーダーアイコン
→SSHコマンドのコピー
をそれぞれ選択します。
SSHコマンドは下記となりますので、SSH秘密鍵のパス、ローカルポートをそれぞれ指定の値に変更しておきます。
ssh -i <SSH秘密鍵のパス> -N -L <ローカルポート>:10.0.1.*:22 -p 22 ocid1.bastionsession.oc1.ap-tokyo-1.amaaaaaaured3paa2wwmx6isw3qu6goyn2blbohklqojndhc562xrnt7qiyq@host.bastion.ap-tokyo-1.oci.oraclecloud.com
変更後、ターミナルを新規で立ち上げて上記のコマンドを入力します。
コマンドを入力後、プロンプトが表示されずに何も操作ができない状態となります。
その場合はセッションが登録されて、SSH接続ができる状態となります。
なお接続時に
This private key will be ignored.
Load key "test.key": bad permissions
のようなエラーが出力された場合、秘密鍵の権限によって接続できない状態となりますので、下記の資料を参考に権限の変更をしておきましょう。
SSH接続で"Permission Denied"と表示されたときの対処法
SSH接続
セッションが完了後、新たにターミナルを起動します。この際に必ずroot権限で入るようにしましょう。
起動後に、下記のコマンドを入力します。
ssh -i <SSH秘密鍵のパス> -p <ローカルポート> opc@127.0.0.1
入力後に、SSH接続を行うかどうかの質問が出力されますので、yes
を入力します。
Are you sure you want to continue connecting (yes/no/[fingerprint])? yes
以下のメッセージが出力された後に、対象のインスタンスにログインすることができます。
Warning: Permanently added '[localhost]:<ローカルポート>' (ED25519) to the list of known hosts.
Activate the web console with: systemctl enable --now cockpit.socket
以上でBastion経由を用いた、簡易的なSSH接続は完成となります。