はじめに
原因調査にかなり苦戦したので、備忘録も兼ねて記事として公開します。
同様の事象に悩まされている方の参考になれば幸いです。
起きた問題
- 一部のメンバーが、特定のサーバにSSHで接続できない
- 接続できないのは、新規参入メンバーや直近でPCを新しい端末に交換したメンバーのみ
- 問題なく接続できるサーバもある
- 認証鍵ファイル(
google_compute_engine
,google_compute_engine.pub
)を作り直しても直らない
環境
- 接続先サーバ: CentOS7
- 接続元PC: macOS Big Sur
接続しようとした際のエラーメッセージ
# SSH接続しようとすると、
gcloud compute ssh --zone "asia-northeast1-b" "VM_NAME" --project "PROJECT_NAME"
# 以下のようなエラーが出力され、接続できない
Permission denied (publickey,gssapi-keyex,gssapi-with-mic).
ERROR: (gcloud.compute.ssh) [/usr/bin/ssh] exited with return code [255].
解決策
SSH接続する際のユーザー名を指定することで解決しました。
gcloud compute ssh --zone "asia-northeast1-b" "USERNAME@VM_NAME" --project "PROJECT_NAME"
参考:https://cloud.google.com/compute/docs/instances/ssh#metadata-managed_ssh_connections
原因
接続先サーバ側で、ユーザーの作成に失敗していたのが原因でした。
- 接続できないユーザーのローカルマシン(Mac)のユーザー名は数字のみ(例: 1234)
※端末の管理上、管理番号や社員番号等でユーザー作成されている場合など - gcloudコマンドでは特にユーザー名を指定しない場合、デフォルトでローカルのユーザー名が使われる
- gcloudコマンドで初めてSSH接続する際、接続先サーバ側でユーザー作成が行われる
- Linuxではユーザー名の先頭に数字を指定することはできない
以上のことから、数字から始まるユーザー名でユーザー作成に失敗し、結果的に権限がない旨のエラーを返していたのが原因と思われます。
補足:一部問題なく接続できていたサーバはOSのバージョンが少し古かったので、数字のみのユーザー名でもユーザー作成できていたようです。