原文はこちら。
https://blogs.oracle.com/cloud-infrastructure/recovering-opc-user-ssh-key-on-oracle-cloud-infrastructure
Oracle Cloud Infrastructureインスタンスに接続しようとしているけれど、何らかの理由でopcユーザーのSSH鍵が壊れたり、削除したりした場合のことを想像してみてください。最初は恐ろしいかもしれませんが、Oracle Cloud InfrastructureでopcユーザーのSSH鍵を復元するのは案外簡単です。
SSH経由で接続しようとしたときに
また、opcユーザーのSSH鍵を復元する別の方法として、Oracle Cloud Infrastructureシリアル・コンソールのメンテナンス・モード・ブート・オプションを使用することもできます。 詳細については、以下のドキュメントをご覧ください。
https://blogs.oracle.com/cloud-infrastructure/recovering-opc-user-ssh-key-on-oracle-cloud-infrastructure
Oracle Cloud Infrastructureインスタンスに接続しようとしているけれど、何らかの理由でopcユーザーのSSH鍵が壊れたり、削除したりした場合のことを想像してみてください。最初は恐ろしいかもしれませんが、Oracle Cloud InfrastructureでopcユーザーのSSH鍵を復元するのは案外簡単です。
SSH経由で接続しようとしたときに
"Permission denied (publickey,gssapi-keyex,gssapi-with-mic)"
というエラーが表示された場合は、以下の手順に従って鍵を復元してください。また、opcユーザーのSSH鍵を復元する別の方法として、Oracle Cloud Infrastructureシリアル・コンソールのメンテナンス・モード・ブート・オプションを使用することもできます。 詳細については、以下のドキュメントをご覧ください。
Instance Console Connections
https://docs.cloud.oracle.com/iaas/Content/Compute/References/serialconsole.htm
Summary
- ログインできないインスタンスを停止
- ブートボリュームをデタッチ
- 実行中のLinuxインスタンスにデタッチしたブートボリュームをアタッチ
- iSCSIコマンドを実行して、デバイスをアタッチし、ローカルのOSから認識できるようにする
- authorized_keys ファイルを修復
- iSCSIコマンドを実行し、デバイスをアンマウント、デタッチ
- 元のインスタンスにブートボリュームをアタッチしてインスタンスを起動
Process
- 接続できないインスタンスを停止します。Oracle Cloud Infrastructure Consoleのインスタンス詳細ページに移動して、Stopをクリックします。詳細は以下のドキュメントをご覧ください。
- ブートボリュームをデタッチします。Boot VolumeセクションでActionsアイコンをクリックし、Detachを選択します。
Detaching a Boot Volume
https://docs.cloud.oracle.com/iaas/Content/Block/Tasks/detachingabootvolume.htm - デタッチしたブートボリュームを別のLinuxインスタンスにアタッチします。異なるVMのDetailsページに移動し、Attach Block Volumeをクリックして、先ほどデタッチしたブートボリュームを選択します。Read/Writeアクセスを選択することをお忘れなく。
- ブートボリュームのアタッチが(BVアイコンが緑になって)完了した後に、SSHで実行中のVMに接続し、iSCSIコマンドでこの新しいディスクをOSが認識し利用できるようにします。
ブートボリュームは/dev/sdbとして見えるはずです。 - mountコマンドを使い、opcユーザーのSSH鍵ファイルを復元できるルート(/)パーティション /dev/sdb3 をローカルのOSで利用可能にします。このとき、必ず-o nouuidオプションを使用してください。 そうしないと、
のようなエラーメッセージが現れます。mount: wrong fs type, bad option, bad superblock on /dev/sdb3
$ sudo mount -o nouuid /dev/sdb3 /mnt
- /mnt/home/opc/.ssh/authorized_keysファイルを編集し、SSH公開鍵ファイルを追加して、opcユーザーのSSH鍵を修正します。
SSH公開鍵の追加もしくは変更が終了したら、保存して終了します。$ sudo vi /mnt/home/opc/.ssh/authorized_keys
- umount /mnt を実行します。
$ sudo umount /mnt
- iSCSIコマンドdetachを実行して、iSCSIブートボリュームをデタッチします。
- /dev/sdb ディスクが見えず、かつ利用できないことを確認してから、デタッチするようにしてください。
- ブートボリュームを元々のインスタンスに再度アタッチし、利用可能になるまで待ちます。
Stopping and Starting an Instance https://docs.cloud.oracle.com/iaas/Content/Compute/Tasks/restartinginstance.htm?Highlight=stop%20instance
Attaching a Boot Volume https://docs.cloud.oracle.com/iaas/Content/Block/Tasks/attachingabootvolume.htm?tocpath=Services%7CCompute%7CBoot%20Volumes%7C_____2