久しぶりに起動した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に問合せしてみます。
ふーっ、眠気が覚めた・・・。また、次回!