GCEでSSH鍵でログインが出来ない((Permission denied (publickey,gssapi-keyex,gssapi-with-mic))の解決方法


事象

  1. ちゃんとSSHの鍵は設定している。(以下のキャプチャは設定してないけど、本来はちゃんと設定されている)
  2. SSHポートも空いている
  3. クライアント側からSSHログインをしようとするとエラーがPermission denied (publickey,gssapi-keyex,gssapi-with-mic)
  4. /var/log/secure を確認すると
Feb 25 16:31:59 wp sshd[20577]: Received disconnect from xx.xx.xx.xx

もはや、何が原因がわからない状態。

原因

  1. .ssh自体の権限は700に設定されているか!?
  2. authorized_keysの権限は600になっているのか!?
  3. id_rsaの権限は600になっているのか!?(ローカルPC)
  4. id_rsa.pubの権限は644になっているのか!?(ローカルPC)→あまり気にしなくても良い
  5. 公開鍵(authorized_keys)はちゃんとコピペできているか!?

この辺を確認する。
https://blog.adachin.me/archives/2054 より

すると、 /home/[ユーザ]/.ssh/authorized_keys が存在しない。
gcpのComputeEngine→VMインスタンスから、SSH鍵をいくら設定をしても駄目。
再起動しても駄目。 (バグ?かと思ったけど、このPJだけで他のPJだとちゃんとauthorized_keysが出来る)
ここの部分をいくら設定しても駄目。

対策

いくらComputeEngine→VMインスタンスから、SSH鍵を作成しても駄目なので、手動でやる。

  1. authorized_keysを/home/[ユーザ]/.ssh/ にコピペ
  2. authorized_keysの権限は600にする
  3. authorized_keysのユーザをログインユーザに合わせる。

これでようやくログインが出来る。

稀なのかもしれない

普通、ComputeEngine→VMインスタンスから、SSH鍵を設定すれば、authorized_keysは自動出来る。
いくらググっても同じ条件で苦しんでいる人が出てこない。
これは稀なのか。

なんとなく原因

SSHのログイン管理を一時的にIAMで管理していたことがあり、その設定が残ると、authorized_keysが出来ない気がする。
カスタムメタデータの enable-oslogin を消して、VM再起動しても駄目だった。
一度やってしまうと、そうなるのかもしれない。