クラウド同上

SSH接続できない!そんな時のシリアルコンソール

Author
satou
Lv:3 Exp:850

ガンガン行こうぜGCP!

GCEのVMインスタンスを再起動したらSSH接続できなくなった!助けて!!というお問い合わせを時々頂きます。 本記事ではそんな万が一の場合に備えて、SSH接続できなくても操作可能なシリアルコンソールをご紹介します。

1. シリアルコンソールとは目の前にサーバがあるようなもの

普段、GCEのVMインスタンスを利用する場合は、OS起動後のVMインスタンスに接続するため、VMインスタンスの起動時の画面を見ることはありません。でも、OS起動時に問題が発生してVMインスタンスに接続できなくなると、何が起きているのか調べることすらできなくなってしまいます。
一方、このシリアルコンソールはまるで目の前にサーバがあるかのように、VMインスタンスの電源ON直後からログを確認することができます。VMインスタンスの操作も可能なため、状況によっては問題を修正することもできるステキな機能です。(※イメージを掴むための大雑把な説明です。詳細が気になる方は自分で調べてみましょう!)

2. シリアルコンソールのログはいつでも見られる

シリアルコンソールで接続するには設定が必要ですが、ログであればいつでも見ることができます。ここではVMインスタンスの例としてLinuxを使用していますが、Windowsでもほぼ同じ手順で確認できます。

まず、GCP Web ConsoleからGCE → VMインスタンス → 該当のインスタンスをクリックします。

VMインスタンスの詳細画面で「シリアルポート1(コンソール)」をクリックします。
※Windowsの場合は「さらに表示」をクリックして表示された「シリアルポート2(コンソール)」をクリックします。

するとシリアルコンソールのログがずらっと表示されます。これで最悪でも何が起きているのか確認することができますね!

3. シリアルコンソールで接続する

それでは次に本命であるシリアルコンソールでVMインスタンスに接続してみます。VMインスタンスのOSによって接続方法が少し違うため、LinuxとWindowsに分けてご紹介します。

3.1. Linux

対象のVMインスタンスがLinuxの場合、シリアルコンソールにログインするためには、事前にVMインスタンス上にローカルパスワードの設定が必要です。ローカルパスワードの設定はSSH接続で行うため、SSH接続ができなくなってからでは遅いのです。SSH接続ができるうちに設定しておきましょう。

LinuxのOSとしてここではDebian GNU/Linux 9を使用していますが他のディストリビューションでも同様です。(CentOS 7,Ubuntu 19.04で確認済)

3.1.1. シリアルンコンソールへのアクセスを有効化する

はじめにGCP Web ConsoleからGCE → VMインスタンス → 該当のインスタンスをクリックします。

VMインスタンスの詳細画面で「編集」をクリックします。

画面上部にある「シリアルポート接続を有効化」にチェックを入れた後、画面下部の「保存」をクリックして保存します。

保存後、詳細画面をみると、シリアルポート接続が有効になっている事が確認できます。

3.1.2. ローカルパスワードを設定する

次にVMインスタンスの詳細画面で「SSH接続」をクリックすると、SSH接続画面が表示されます。

SSH接続画面が表示され自動的にログインが行われます。

文字が緑色になっている個所、@の前の文字列が現在ログインしているユーザ名です。(この画面の例では satou )

下記コマンドを入力して現在ログインしているユーザのローカルパスワードを設定します。

$ sudo passwd `whoami`

パスワードの入力が求められるので、任意のパスワードを入力します。ここで入力したパスワードは万が一の際に使うパスワードです。利用頻度が低いので忘れないようにして下さい!(入力しても画面に何も表示されませんが気にせず入力します)

もう一度、パスワードの入力が求められるので、同じパスワードを入力します。
(入力しても画面に何も表示されませんが気にせず入力します)

このメッセージが表示されればOKです。

SSH接続を終了します。

$ exit

もし、パスワードを間違って入力した場合には下記のメッセージが表示されます。
この場合は再度、sudo passwd `whoami` のコマンド入力からやり直します。

3.1.3. シリアルコンソールでログインする

VMインスタンスの詳細画面から「シリアルコンソールに接続」をクリックします。

インタラクティブシリアルコンソールという、SSH接続と良く似た画面が表示されます。

メッセージが色々表示されていますが安心して下さい。この画面でEnterキーを押すと、ログインプロンプトが表示されます。

先ほどローカルパスワードを設定したユーザ名(satou)を入力します。

次にパスワードを入力します。
(入力しても画面に何も表示されませんが気にせず入力します)

ユーザ名とパスワードが正しく入力できていれば、シェルプロンプトが表示されます。これでシリアルコンソールからのログインは完了です!

何か問題があった場合には root で作業する必要があるかもしれませんので、念のため下記コマンドで root になれることを確認しておきます。

$ sudo su -

このプロンプトが表示されれば root の確認も完了です。

これでもし万が一SSH接続が出来なくなっても、シリアルコンソールで操作できるので復旧できるかもしれません!

後始末の為に、exit を2回入力してシリアルコンソールのログインまで戻った後、画面右上の✖印で終了して下さい。

3.2. Windows

対象のVMインスタンスがWindowsの場合、最初にVMインスタンスを利用する際にユーザとパスワードを設定しているはずです。シリアルコンソール接続の際にはそのユーザ・パスワードを使用してログインします。

WindowsのOSとして、ここではWindows Server 2019 Datacenterを使用していますが他のバージョンでも同様です。(Windows Server 2016 Datacenterで確認済)

3.2.1. シリアルンコンソールへのアクセスを有効化する

GCP Web ConsoleからGCE → VMインスタンス → 該当のインスタンスをクリックします。

VMインスタンスの詳細で「編集」をクリックします。

画面上部にある「シリアルポート接続を有効化」にチェックを入れた後、画面下部の「保存」をクリックして保存します。

保存後、詳細画面をみると、シリアルポート接続が有効になっているのが確認できます。

3.2.2. シリアルコンソールでログインする

VMインスタンスの詳細画面から、シリアルコンソールに接続の右にある「▼」をクリックして、「シリアルポート2(コンソール)」をクリックします。

インタラクティブシリアルコンソールという、SSH接続と良く似た画面が表示されます。

Special Administration Console(SAC)が起動しています。SAC の詳細な使い方は公式ドキュメントをご参照下さい。ここではいつもの見慣れたコマンドプロンプトの表示までご案内します。

コマンドプロンプトチャンネルを作成するために下記コマンドを入力します。

>cmd

コマンドプロンプトチャンネルが作成されます。

Esc + Tab を入力するとコマンドプロンプトチャンネルが有効になります。

この画面で任意のキーを入力すると、ユーザ名(satou)の入力が求められますので入力します。

次にドメイン名を入力します。(必要ない場合はそのままEnter)

最後にパスワードを入力します。(入力は*で表示されます。)

全てが正しく入力できていれば、いつものコマンドプロンプトの画面が表示されます。

これでもし万が一、RDP接続が出来なくなっても、シリアルコンソールで操作できるので復旧できるかもしれません!

後始末の為に、exit を入力してシリアルコンソールのログインまで戻った後、画面右上の✖印で終了します。

4. それでもバックアップや冗長化は必須です

ここでご紹介した内容は万が一の場合にログを確認したり、インスタンスに接続できなくなった場合の最後のアクセス手段です。シリアルコンソールを使って接続できても復旧できるとは限りませんし、壊れ方によってはシリアルコンソールすら繋がらない場合もあります。
ユーザの自由度が高いGCEでは、OSより上のレイヤーについてはユーザの責任にて管理しなければなりません。つまりOS上の操作で不具合が発生した場合はユーザ自身にて対応が必要なのです。最後の手段があるからと安心せず、壊れる前提でバックアップや冗長化は必ず行いましょう。GCP にはこれらに役立つ便利なサービスが揃っていますので、ぜひご活用下さい。

5. まとめ

シリアルコンソール、いかがでしたでしょうか。通常あまり使用する機能では無いですが、念のため設定しておけば、万が一の際の救世主になってくれるかもしれません。詳細や注意事項については、Google 公式ドキュメントに記載されていますので、興味がある方は公式ドキュメントをご参照下さい。
※特にシリアルコンソールでの接続はIPホワイトリストなどIPベースのアクセス制限をサポートしません。正しい情報を知っていれば誰でもインスタンスに接続できてしまいます。ファイアウォールルールを使用して、社内ネットワークからの接続のみに限定するなど、ネットワークと特定のポートへのアクセスを制御して下さい。

クラウドエースでは、Google Cloud Platformのご利用について様々な技術支援を行っております。GCPで何かお困りのことがございましたら是非ご相談ください!

次の記事を読み込んでいます
次の記事を読み込んでいます
次の記事を読み込んでいます
次の記事を読み込んでいます
次の記事を読み込んでいます