目次
はじめに
みなさん、こんにちは。
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インスタンスをクリックします。
インスタンスの詳細ページから画面左下のリソース欄にある[コンソール接続]をクリックします。
コンソール接続の画面から[ローカル接続の作成]をクリックします。
以下の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]キーを押してブート・エントリを編集します。
再起動されると、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インスタンスに対して、シリアル・コンソール接続の検証をしてみましたが、いかがでしたでしょうか?
基本的には、トラブルシューティング以外で使用することはないと思いますが、特に難しい設定はなく、簡単にシリアル・コンソール接続を使用することができますので、皆様も是非ご活用下さい。