久しぶりに起動したGoogle Cloud PlatformのインスタンスにSSH接続できなかったときは

  • #技術ブログ 

ふわー、まだ眠い・・・、「春眠暁をおぼえず」的にまた、1ヶ月更新空けてしまいました、季節の穏やかさに甘えまくりのうえピーです。

今回は、私のGoole Cloud Platformで起こった事件とその対処です。

それは、ある日の午前中のことでした。
最近、社内でAsterisk案件が盛り上がりつつあったので、久しぶりにMyFreePBX起動してみるかと思い立ちました。

早速、GCPの管理コンソールを開いてインスタンスを起動です。

よし、オッケー。そのまま、Asteriskを起動するため、SSH接続っと。

あれ??タイムアウト???

う~ん、とりあえず、Google Cloud Shellで接続してみるか。

おぉ、Permissionエラーになっとる。

という感じでした。とりあえずヘルプドキュメントの指示に従ってみましたが、解消せず・・・、さてどうするか。

まずは、SSH接続アカウントの公開鍵設定してみるかな。

保存して、リトライ。あちゃー、やっぱ駄目だぁ。

こりゃ、サーバー側の設定だけどどうやって接続しよう、シリアルコンソールはパスワード設定してないし・・・。

とりあえず、一度ディスク残しのインスタンス削除して、別なインスタンスにディスクマウントして、SSHの設定ファイル比較してみるかな。

それでは早速。無理やり停止後、インスタンス削除と。

SSH設定比較と、ディスクマウント用に同じゾーンでインスタンス作成。
うん、SSH接続できるね。

それでは、問題のDiskを追加して保存と。

よし、マウント。OK。

sshd_config違いなし。あれ?こっちに違いがあると思ったのに。

うーん、じゃあauthorized_keysかな。おっ、1行追加されてる。

早速、これを追加してみましょう。よし、一致。

それでは、こちらからは変更後のDiskをunmoutして、再度このDiskでインスタンスを作成してみましょう。
mountしていたインスタンスから追加Disk削除も忘れずに!!

おーい、また接続できないとは!!しまったmountしたとき、sshのログ見ておくんだった・・・。

くそーっ、もう一回インスタンス削除して、再mountじゃい。

うーん、secureログに「Did not receive identification string from」が出てるなぁ。でも/etc/ssh/sshd_configの設定は正常に接続できるインスタント同じ・・・、謎。

とりあえず、シリアルコンソールで接続できるようにパスワード仕込んで、見るか。
このドキュメントに書いてある通り、$HOME/.sshフォルダの権限がおかしくなっているのだとすると、何かしらの方法で接続しないと修正しようがないし。
※ちなみにユーザー名の変更はやってみましたが事象は改善しませんでした・・・。

まずは、mount用インスタンスのユーザーにパスワードを設定してと・・・。

一旦、このインスタンスにシリアルコンソール接続できるか試してみるか。
シリアルコンソール接続をONにして、保存。

接続できるかな・・・、OK。

ユーザーは、同じなので/etc/shadowファイルを無理やり変更してみるか。
※一旦変更権限つけて->パスワード追記->変更権限解除

再度、インスタンス作成じゃい!!

そして、シリアルコンソール接続設定ON、&接続OK。

.sshフォルダとauthorized_keysの権限は・・・、ドキュメントの通り正しいじゃん!!

長くなりましたが、とりあえず、シリアルコンソール接続で運用して、SSH接続の件は、タイミングを見てGoogleに問合せしてみます。
ふーっ、眠気が覚めた・・・。また、次回!