我一直试图将我的公共ssh密钥转移到我的gcloud项目中,但出现以下错误:
gcloud compute os-login ssh-keys add --key-file=.ssh/gcloud-key.pub --ttl 365d
ERROR: (gcloud.compute.os-login.ssh-keys.add) FAILED_PRECONDITION: <eye3-stackless title='/FocusBackend.MutateData, APPLICATION_ERROR'/>APPLICATION_ERROR;MutateDataHandler{username=cloud-cluster-proxy, role=focus-backend-proxy, run_as_role=, debug=, fingerprint=0} failed com.google.focus.backend.server.OperationDeniedException: Reason: UNIQUE_VIOLATION; A field in the mutate request violates unique constraint. See the SchemaValidationMessage on the RPC side channel for structured details useful for dynamic client use. <FailedGaiaId:##########>
Stack trace:
com.google.focus.backend.server.OperationDeniedException: Reason: UNIQUE_VIOLATION; A field in the mutate request violates unique constraint. See the SchemaValidationMessage on the RPC side channel for structured details useful for dynamic client use. <FailedGaiaId:##########>
at com.google.focus.backend.server.AbstractHandler.checkSpannerUniqueViolation(AbstractHandler.java:1383)
at com.google.focus.backend.server.AbstractHandler.checkKansasMutateStatusOk(AbstractHandler.java:1527)
at com.google.focus.backend.server.MutateDataHelper$32.checkRpcStatusOk(MutateDataHelper.java:9241)
at com.google.focus.backend.server.MutateDataHelper.onKansasUpdateComplete(MutateDataHelper.java:9479)
at com.google.focus.backend.server.MutateDataHelper.access$5400(MutateDataHelper.java:341)
at com.google.focus.backend.server.MutateDataHelper$30.callbackEx(MutateDataHelper.java:8915)
at com.google.focus.backend.util.HandlerCallbackFactory$RequestHandlerCallback.execute(HandlerCallbackFactory.java:395)
at com.google.focus.backend.util.HandlerCallbackFactory$BaseHandlerCallback.callback(HandlerCallbackFactory.java:358)
at com.google.focus.backend.util.HandlerCallback$1.runInContext(HandlerCallback.java:145)
at com.google.tracing.TraceContext$TraceContextRunnable$1.run(TraceContext.java:460)
at io.grpc.Context.run(Context.java:565)
at com.google.tracing.CurrentContext.runInContext(CurrentContext.java:166)
at com.google.tracing.TraceContext$AbstractTraceContextCallback.runInInheritedContextNoUnref(TraceContext.java:319)
at com.google.tracing.TraceContext$AbstractTraceContextCallback.runInInheritedContext(TraceContext.java:311)
at com.google.tracing.TraceContext$TraceContextRunnable.run(TraceContext.java:457)
at com.google.common.context.ContextRunnable.runInContext(ContextRunnable.java:50)
at com.google.common.context.ContextRunnable$1.run(ContextRunnable.java:39)
at io.grpc.Context.run(Context.java:565)
at com.google.tracing.CurrentContext.runInContext(CurrentContext.java:166)
at com.google.tracing.GenericContextCallback.runInInheritedContextNoUnref(GenericContextCallback.java:72)
at com.google.tracing.GenericContextCallback.runInInheritedContext(GenericContextCallback.java:64)
at com.google.common.context.ContextRunnable.run(ContextRunnable.java:36)
at com.google.common.labs.concurrent.TimedRunnable$1.call(TimedRunnable.java:37)
at com.google.common.labs.concurrent.TimedRunnable$1.call(TimedRunnable.java:34)
at com.google.common.labs.concurrent.TimedCallable.call(TimedCallable.java:52)
at com.google.common.labs.concurrent.TimedRunnable.run(TimedRunnable.java:48)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
at java.lang.Thread.run(Thread.java:748)
at com.google.focus.backend.server.MonitoredThreadFactory$MonitoredThread.run(MonitoredThreadFactory.java:89)
;AppErrorCode=13;StartTimeMs=1548155251448;ServerTimeSec=0.16378735;TCP;Deadline=9.905;CliLog=-1;SrvLog=256;FailFast;EndUserCredsRequested;ReqSecLevel=none;RespFormat=UNCOMPRESSED;/FocusBackend.MutateData;LastReqID=902e2568409590b4;LastGlobalID=0;Server=[2002:a0d:2917::]:4428
我正在运行Windows 10,并且已经更新了我的gcloud utils。使用Unix系统的人在我们的团队中似乎没有这个问题。 我尝试生成新密钥,在另一个项目中创建密钥,并从跨项目的云计算引擎进行传输,但是我一直遇到相同的错误。 gcloudcompute os-login ssh-keys列表为我提供了零项。我还重新认证了其他内容。
我们将不胜感激。
-Thx提示
答案 0 :(得分:0)
您可以按照[1]中的说明进行操作,并确保已启用“ os-loging”。如果仍然失败,请从另一台计算机尝试使用同一帐户,以丢弃所有本地问题。
答案 1 :(得分:0)
要将公共ssh密钥转移到gcloud项目,您可以按照以下步骤操作:
ssh-keygen -t rsa -b 4096 -f〜/ .ssh / [USER]-键-C [USER]
当出现以下消息时,只需按两次[ENTER]键,
输入密码短语(无密码时为空): 再次输入相同的密码:
限制对新SSH密钥的访问: chmod 600〜/ .ssh / [USER]键
获取〜/ .ssh / [USER] -key.pub
cat〜/ .ssh / [USER] -key.pub
在您的项目中,添加公共SSH密钥[1]:
在Google Cloud Platform控制台中,转到VM实例页面。
单击要修改的实例的名称。
点击工具栏中的编辑。
在“ SSH密钥”下,单击“显示并编辑”。该部分将展开以显示所有实例级公共SSH密钥。
修改实例级公共SSH密钥:
要添加公共SSH密钥,请单击添加项目。这将产生一个文本框。复制 SSH公用密钥文件的内容,并将其粘贴到文本框中。对要添加的每个公共SSH密钥重复此过程。
要删除公共SSH密钥,请单击其旁边的删除按钮:
对于要删除的每个公共SSH重复此过程。
完成后,单击页面底部的保存。
连接到您的VM实例:
ssh -i〜/ .ssh / [USER]键[USER] @ [IP地址]
[1] https://cloud.google.com/compute/docs/instances/adding-removing-ssh-keys#instance-only