Rubyと筋肉とギターとわたし

エンジニア二年目の雑魚です。プログラミング・ギター・筋トレのことをメインにブログを書いていきます。

Google Compute Engineのsshが突然接続できなくなった

f:id:rdwbocungelt5:20180727094804j:plain

いろんなサーバーをGCPに移行していっているんですが、突然ブラウザ上のSSHコンソールが接続できなくなったので対処法を書こうと思います。

環境

原因不明

文字通り突然接続できなくなりました。

他プロジェクトのVMインスタンスでは接続できるのにどうしてこんなことが起こったのか謎。

ちなみにSSHはカスタムポートで動くように設定してます。

ファイアーウォールルールも設定済みで、sshd_configにも記述済みの状態です。

マジ謎。

エラーメッセージ

プロジェクト メタデータへの鍵転送に異常に長い時間がかかっています。インスタンス メタデータに転送する方が所要時間は短くなる可能性がありますが、鍵が転送されるのはこの VM のみになります。この仮想マシンから他の仮想マシンSSH 接続する場合は、鍵を適切に転送する必要があります。 鍵をインスタンス メタデータに転送する場合は、こちらをクリックしてください。この設定は後で変更できず、有効にした後に、[インスタンスの詳細] ページで無効にする必要があります。

日本語でおk

その後に一瞬ですがシリアルコンソール云々という文言が出てきたので、とりあえずVMインスタンスからシリアルコンソールを開きました。

開けない(disabledになっている)方はインスタンスの編集からシリアルポート接続を許可にチェックを入れてください。

やったこと

VMインスタンスから該当のインスタンス名をクリック、その後「シリアルコンソールに接続」で接続できます。

接続するとえげつない量のエラーが。。。

vm google-accounts: ERROR Exception calling the response handler. [Errno 28] No space left on device.#012Traceback (most recent call last):#012  File "/usr/lib/python2.7/site-packages/google_compute_engine/metadata_watcher.py", line 196, in WatchMetadata#012    handler(response)#012  File "/usr/lib/python2.7/site-packages/google_compute_engine/accounts/accounts_daemon.py", line 263, in HandleAccounts#012    self.utils.SetConfiguredUsers(desired_users.keys())#012  File "/usr/lib/python2.7/site-packages/google_compute_engine/accounts/accounts_utils.py", line 288, in SetConfiguredUsers#012    updated_users.flush()#012IOError: [Errno 28] No space left on device

なんか容量っぽい・・・。

# df
ファイルシス   1K-ブロック     使用          使用可     使用%   マウント位置
/dev/sda1       15716368   15716348      20           100%         /
devtmpfs        3481172          0            3481172       0%          /dev
tmpfs              3488804          0            3488804      0%          /dev/shm
tmpfs              3488804      17828        3470976      1%          /run
tmpfs              3488804          0            3488804      0%          /sys/fs/cgroup
tmpfs               697764           0            697764        0%          /run/user/1000
tmpfs               697764           0            697764        0%          /run/user/0

100%

ということで少しファイル数を減らして、容量をあけることにします。

シリアルコンソール接続中も継続的にエラーが出てきてたのですが、容量を開けたら出なくなりました。

SSHコンソールに接続

f:id:rdwbocungelt5:20180727103524p:plain

だめですねぇ :)

もう一回シリアルコンソールに接続して、firewallとselinuxがdisableになっているか確認します。

$ sudo systemctl is-enabled firewalld
disabled

$ getenforce
disabled

どっちもdisabledになってるね。

とりあえずよくわからんからsudo yum updateすると、固まりました\(^o^)/

ctrl + cしてもダメ、ウィンドウ閉じて開き直してもダメ。

いまのところ打つ手なし。

諦めてローカルからSSH

正直ブラウザのコンソールだと感度悪いし、起動速度もそんなに速くないです。

これを機に大人しくローカルから接続する方法に切り替えました。

$ cd ~/.ssh & ssh-keygen -t rsa -b 4096 -C "rdwbocungelt5@gmail.com"
#=> あとは順をおって作成するだけ。

出来上がったrsa.pubをコピーして、GCEのメタデータに貼っつけます。

Compute Engine -> メタデータ -> SSH認証鍵 -> 編集で鍵を貼り付けるだけです。

おわりに

ブラウザからSSHコンソールに接続する方法は解決できませんでしたが、暫定的にローカルからSSHすることで解決させました。

解決策が見つかれば後日追記等したいと思います。





アリーヴェデルチ

後日追記(7 / 31)

久しぶりにブラウザからSSHコンソール開いてみたら何の問題もなく開きました。

時間が解決してくれるってことですかね。

失恋じゃねえんだから。