0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

Google Compute EngineでSSH接続できなくなってからでもパスワードを設定する

Posted at

Google Compute Engineで焦ってDebianのアップグレードをしてしまったらSSH接続が出来なくなってしまいました。

※自分の場合は個人利用のf1-microマシンなので適当ですが、まともなVMでアップグレードをする際にはスナップショットを取るなど、巻き戻せる準備もしておくべきですね。

いろいろ試しながら検索したところでは、
GCPでstretchをbusterに上げたらSSH鍵が転送されなくなった-blog.akimasa.jp

結局、ゲスト環境パッケージのインストールを行ったら直った。
google-compute-engine-osloginとgoogle-compute-engineが入っていなかったようだ。

というわけで、google-compute-engine-osloginを入れねば、と思いました。

SSHログインできないときはシリアルコンソール接続になります。
が、 パスワード設定していないのでログイン出来ません

さらに調べたところ、
ゲスト環境のインストール  |  Compute Engine ドキュメント
の 「ブートディスクのクローンを作成して起動スクリプトでゲスト環境をインストール」をやっていけばなんとかなりそうです。

もうひとつVMインスタンスを立ち上げ、今使っているディスクをコピーしてrc.localに仕込んで動かす、という寸法です。

が、自分の環境の場合、別の依存関係で失敗してしまいます。
google-compute-engine : Depends: python3-google-compute-engine (= 20190124-3) but 2.8.16-1 is to be installed
みたいな感じです。アップグレードが古すぎたのですね。

都度都度rc.localに仕込んでブート時に対処するのは厳しいので、この仕組みを応用してアカウントにパスワードを設定することにしました。

Debian だと chpasswdでファイルを読み込めばパスワード設定できるはずです。

gcloud compute ssh rescue


export NEW_DISK_MOUNT_POINT="/tmp/sdb-root-vol"
DEV="/dev/sdb1"
sudo mkdir "$NEW_DISK_MOUNT_POINT"
sudo mount "$DEV" "$NEW_DISK_MOUNT_POINT"
cat <<'EOF' >/tmp/rc.local
#!/bin/bash
cat <<'EOL' > /tmp/myuser.txt
ログインユーザー名:パスワード
EOL
sudo chpasswd < /tmp/myuser.txt
rm /tmp/myuser.txt
reboot now
EOF
if [ -f "$NEW_DISK_MOUNT_POINT/etc/rc.local" ]; then
   sudo mv "$NEW_DISK_MOUNT_POINT/etc/rc.local" \
   "$NEW_DISK_MOUNT_POINT/etc/moved-rc.local"
fi
sudo mv /tmp/rc.local "$NEW_DISK_MOUNT_POINT/etc/rc.local"
sudo chmod 0755 "$NEW_DISK_MOUNT_POINT/etc/rc.local"
sudo chown root:root "$NEW_DISK_MOUNT_POINT/etc/rc.local"

sudo umount "$NEW_DISK_MOUNT_POINT" && sudo rmdir "$NEW_DISK_MOUNT_POINT"

みたいなことをしてみたら、パスワード設定されたディスクを準備できました。

ちなみに上記のサイトだと、さらに別のインスタンスを用意して新ディスクで動かしてね、みたいな流れでしたが、
ぶっちゃけ旧インスタンスのブートディスクを外してrescueインスタンスで上記みたいなrc.localを仕込めば2インスタンスで作業は済みます。

シリアルコンソール接続できれば、あとは
apt --fix-broken install
とかなんとか右往左往してSSH接続出来るようになりました。

いやーヒヤヒヤしました!

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?