はじめに

みなさん、こんにちは。
Oracle Cloud Infrastructure 検証チームです。

今回は、
Oracle Cloud Infrastructure (OCI) のLinuxインスタンスに
対して、
シリアル・コンソール接続の検証を実施しましたので、
ご紹介したいと思います。

過去のOCI関連記事はこちら

Linuxインスタンスへのシリアル・コンソール接続

OCIでは、Linuxインスタンスを作成すると、デフォルトでSSHによるインスタンスへの接続ができます。
SSHによるインタンスへの接続ができれば、通常は問題ないですが、何かのトラブルでSSHができなくなってしまった場合などに、シリアル・コンソール接続を利用します。

今回、シリアル・コンソール接続の対象となるLinuxインスタンスと接続元のクライアントとなるLinuxインスタンスをそれぞれ1台ずつ用意して検証していきます。

接続元クライアントでのSSHキー・ペアの作成

シリアル・コンソール接続をするのに、SSHキー・ペアが必要となる為、接続元クライアントで作成します。
今回はssh-keygenユーティリティを使用して、2048ビットのRSAキーを作成します。

[opc@client ~]$ ssh-keygen -t rsa -b 2048

作成された公開鍵を表示して、記録します。(後ほど使用します。)

[opc@client ~]$ cat /home/<ユーザ名>/.ssh/id_rsa.pub

インスタンス・コンソール接続の作成

次に、OCIの管理コンソールへログインし、インスタンス・コンソール接続を作成します。
まずはコンソール画面の左上のメニューから[コンピュート] – [インスタンス]の順でクリックし、画面を遷移させます。

シリアル・コンソール接続を許可するLinuxインスタンスをクリックします。
インスタンスの詳細ページから画面左下のリソース欄にある[コンソール接続]をクリックします。

コンソール接続の画面から[ローカル接続の作成]をクリックします。

[ローカル接続の作成]では、SSHの公開鍵を登録します。
以下の3つから選択して、SSHの公開鍵を登録できますが、今回は事前に接続元クライアントでSSHキー・ペアを作成していますので、[公開キーの貼付け]で登録します。
  • キー・ペアを自動で生成
  • 公開キー・ファイル(.pub)のアップロード
  • 公開キーの貼付け

公開鍵の情報を貼り付け、[コンソール接続の作成]をクリックします。
※前項で作成した公開鍵の情報を貼り付けています。

コンソール接続の一覧に、作成したローカル接続が表示されるので、ステータスが[アクティブ]になっていることを確認します。

シリアル・コンソール接続

前項まででシリアル・コンソール接続をする為の準備はできたので、シリアル・コンソール接続を試してみます。

まずは、作成したローカル接続からシリアル・コンソール接続文字列を取得します。
作成したローカル接続の右の・・・メニューを開きます。
今回は、接続元クライアントがLinuxの為、[Linux/Macのシリアル・コンソール接続をコピー]を選択します。

接続元クライアントでコピーしたシリアル・コンソール接続文字列を貼り付けて実行します。

[opc@client ~]$ ssh -o ProxyCommand='ssh -W %h:%p -p 443 ・・・(長いので以下略)・・・

=================================================
IMPORTANT: Use a console connection to troubleshoot a malfunctioning instance. For normal operations, you should connect to the instance using a Secure Shell (SSH) or Remote Desktop connection. For steps, 
see https://docs.cloud.oracle.com/iaas/Content/Compute/Tasks/accessinginstance.htm
For more information about troubleshooting your instance using a console connection, see the documentation: https://docs.cloud.oracle.com/en-us/iaas/Content/Compute/References/serialconsole.htm#four
=================================================

Oracle Linux Server 8.8
Kernel 5.15.0-105.125.6.2.1.el8uek.x86_64 on an x86_64

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

server1 login:

※はじめて接続する場合は、既知のホストに登録するかどうかを聞かれる為、
Are your sure you want to continue connecting (yes/no)? と表示されたら、yesと入力し Enterキーを押します。

ログインプロンプトが表示されれば、接続はできている為、ユーザ名とパスワードを入力して、ログインすることができます。

シリアル・コンソール接続を使ったメンテナンス・モードでの起動

シリアル・コンソール接続を使用すると、Linuxインスタンスをメンテナンス・モードで起動できるようになります。

今回は、SSHの秘密鍵の紛失し、LinuxインスタンスへSSH接続できなくなってしまった場合を想定して、メンテナンス・モードから、新しいSSHの公開鍵をLinuxインスタンス側へ登録することを検証してみます。

新しいSSHキー・ペアの作成(再登録用)

新しいSSHキー・ペアを作成します。

シリアル・コンソール接続用にSSHキー・ペアを作成した時と同様に、接続元クライアントでssh-keygenユーティリティを使用して、2048ビットのRSAキーを作成します。
※シリアル・コンソール接続用とSSHキー・ペアの名前が重複しないようにファイル名を指定しています。

[opc@client ~]$ ssh-keygen -t rsa -b 2048 -f /home/<ユーザ名>/.ssh/id_rsa_new_key

作成された公開鍵を表示して、記録します。(後ほど使用します。)

[opc@client ~]$ cat /home/<ユーザ名>/.ssh/id_rsa_new_key.pub

メンテナンス・モードでの起動

メンテナンス・モードで起動する為に、Linuxインスタンスへシリアル・コンソール接続をします。

[opc@client ~]$ ssh -o ProxyCommand='ssh -W %h:%p -p 443 ・・・(長いので以下略)・・・

=================================================
IMPORTANT: Use a console connection to troubleshoot a malfunctioning instance. For normal operations, you should connect to the instance using a Secure Shell (SSH) or Remote Desktop connection. For steps, 
see https://docs.cloud.oracle.com/iaas/Content/Compute/Tasks/accessinginstance.htm
For more information about troubleshooting your instance using a console connection, see the documentation: https://docs.cloud.oracle.com/en-us/iaas/Content/Compute/References/serialconsole.htm#four
=================================================

Oracle Linux Server 8.8
Kernel 5.15.0-105.125.6.2.1.el8uek.x86_64 on an x86_64

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

server1 login:

シリアル・コンソール接続後、OCIの管理コンソールからLinuxインスタンスを再起動します。

※以下メンテナンス・モードでの起動手順はOracle Linux 8で検証した際の手順となります。
再起動が始まったら、[F5]キーを繰り返し押して、メニューを表示させます。
メニュー上から[Boot Manager] – [UEFI ORACLE BlockVolume]の順で[Enter]を押した後、


すぐに[ESC]キーを繰り返し押して、ブートメニューを表示させます。
ブートメニューのメニューの最上位の項目を選択した状態で、[e]キーを押してブート・エントリを編集します。

[linux]または[linuxefi]で始まる行の末尾に[init=/bin/bash]を追記し、[Ctrl]+[x]キーを押して、再起動します。

再起動されると、Bashシェルのコマンドライン・プロンプトが表示されます。

[root@localhost /]#

SSH公開鍵の再登録

メンテナンス・モードでLinuxインスタンスを起動できたら、以下の手順でSSH公開鍵を再登録します。

まずは、SElinuxポリシーをロードします。

[root@localhost /]# /usr/sbin/load_policy -i

次に、ルート・パーティションを読み書き権限で再マウントします。

[root@localhost /]# /bin/mount -o remount, rw /

SSHキー・ディレクトリへ移動します。

[root@localhost /]# cd /home/<ユーザ名>/.ssh/

既存の認証済み鍵ファイルをリネームします。

[root@localhost .ssh]# mv authorized_keys authorized_keys.old

新しいSSH公開鍵の登録します。

[root@localhost .ssh]# echo '<再登録したい公開鍵の文字列>' >> authorized_keys

認証済み鍵ファイルの所有者/グループと権限を変更します。

[root@localhost .ssh]# chown <所有者>:<グループ> authorized_keys
[root@localhost .ssh]# chmod 600 authorized_keys

Linuxインスタンスを再起動します。

[root@localhost .ssh]# /usr/sbin/reboot -f

Linuxインスタンス再起動後、新しいSSH秘密鍵を使用して、SSH接続できれば、SSH公開鍵の再登録は完了です。

おわりに

今回は、Oracle Cloud Infrastructure (OCI) のLinuxインスタンスに対して、シリアル・コンソール接続の検証をしてみましたが、いかがでしたでしょうか?

基本的には、トラブルシューティング以外で使用することはないと思いますが、特に難しい設定はなく、簡単にシリアル・コンソール接続を使用することができますので、皆様も是非ご活用下さい。

OCIに関するお問い合わせはこちら