已配置正确SSH仍无法连接GCE实例问题排查
排查GCE SSH连接密钥验证环节问题
从你给出的调试日志片段来看,SSH已经成功和目标实例的22端口建立了连接,并且开始加载本地的/Users/myusername/.ssh/google_compute_engine身份密钥,但日志截断在key_l...,大概率是密钥验证环节卡壳了。下面是几个针对性的排查和解决步骤:
确认GCE实例元数据中存在你的公钥
先检查本地的google_compute_engine.pub公钥是否已经同步到实例的SSH密钥元数据里:gcloud compute instances describe instancename --zone us-central1-b --project projectname --format="value(metadata.sshKeys)"如果输出里找不到你本地公钥的内容,直接重新执行ssh命令让gcloud自动同步密钥:
gcloud compute ssh instancename --zone us-central1-b --project projectname或者手动把
/Users/myusername/.ssh/google_compute_engine.pub的内容添加到实例的SSH密钥元数据中(在GCE控制台操作也可以)。修正本地密钥文件的权限
SSH对密钥文件的权限要求非常严格,权限过松会被拒绝使用。执行下面的命令修复权限:chmod 700 /Users/myusername/.ssh chmod 600 /Users/myusername/.ssh/google_compute_engine chmod 644 /Users/myusername/.ssh/google_compute_engine.pub强制生成新的密钥对并同步
如果怀疑现有密钥损坏,可以让gcloud生成新的密钥对并自动同步到实例:gcloud compute ssh instancename --zone us-central1-b --project projectname --ssh-key-file=/Users/myusername/.ssh/new_gce_key这个命令会自动创建新的密钥对,同时把公钥添加到实例的元数据中,之后就可以用这个新密钥连接了。
检查实例内部的SSH服务状态
虽然连接已经建立,但实例内部的sshd服务可能存在异常。如果开启了串行端口访问,可以通过GCE控制台的串行终端登录实例,执行以下命令检查服务状态:sudo systemctl status sshd如果服务没运行,就重启它:
sudo systemctl restart sshd
如果以上步骤都没解决问题,建议把完整的debug日志贴出来,这样能更精准地定位卡壳的具体环节。
内容的提问来源于stack exchange,提问作者quietpoise007
相关产品推荐
相关产品推荐

