/* */

GCEでSSHエラーが出る時の対処法

技術情報,時事ネタ(ブログ)

いやー、ハマりました。4時間位無駄にしてしまったかも。

ハマったので備忘録ついでにワークアラウンド書いておきます。
スクリーンショット取っておかなかったのが悔やまれますな。

事象

  • GCEにSSHアクセス時に、「Permission denied (publickey,gssapi-keyex,gssapi-with-mic).」エラーが出る。
  • ローカルSSHでもクラウドシェルでも事象は同じ
  • 鍵を手動作成しても事象は変わらない。
  • 特定のプロジェクトだけで事象が発生
  • 正常なプロジェクトと比較すると、GCEの「メタデータ」に鍵が作成されている。何度消しても蘇る。正常なプロジェクトは、「認証鍵鍵生成」タブに生成される。

参考にしたサイト(外部リンク)

同様の事象で悩んでた方。田中(゜p゜)はこれで解決しなかった。
https://qiita.com/keisukeYamagishi/items/baff3383a95bdd829636

Google公式SSHトラブルシューティング。相変わらずわかりにくい…。
https://cloud.google.com/compute/docs/troubleshooting/troubleshooting-ssh?hl=ja

ワークアラウンド

ダメだったときには次に行く感じで、上から順に実行してます。これで鍵の再作成が走り、だいたい復旧します。
任意のユーザ名はローカルのログインユーザに合わせ、任意の鍵名はホントに任意です。どうせ再作成されるので。

  1. コンソールのGCEのページで出力されるコマンドに、以下の太字部分を追加。
    gcloud compute ssh –zone “<ゾーン名>" “<任意のユーザ名>@<対象のマシン名>" –project “<プロジェクトID>" –ssh-key-file=~/.ssh/<任意の鍵名> –force-key-file-overwrite
  2. 「1」に加えて「rm-rf ~/.ssh/google*」実行。
  3. 「1」「2」に加えて、GCEのメタデータのsshKeys(任意のユーザ名に対応するもの)、認証鍵生成のタグにあるユーザを全て削除。

    ただ、メタデータの削除については、正直プロジェクト内での設計を確認したほうが良いです。他に影響出てしまうかも。

    あくまでワークアラウンドなので、根本原因、解決策お持ちの方は教えて下さい…

トリガー?

正常なプロジェクトとの違いは以下のような感じです。

  • GKEでクラスタ作った
  • AppEngine、およびGAEのAPIを有効化した
  • CloudSQL利用のためにサービスアカウントへの権限付与、およびAPIを有効にした。
  • 他プロジェクトからイメージ引っ張るためにIAMをゴニョゴニョした

参考サイトにもありますが、正直どうしてこうなるのか全く持って不明です。
こういう時、AWSなら事例がたくさんあって楽なのにな…。