为什么我不能将ssh密钥转移到os-login?

时间:2019-01-22 11:16:50

标签: ssh google-compute-engine ssh-keys

我一直试图将我的公共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提示

2 个答案:

答案 0 :(得分:0)

您可以按照[1]中的说明进行操作,并确保已启用“ os-loging”。如果仍然失败,请从另一台计算机尝试使用同一帐户,以丢弃所有本地问题。

[1] https://medium.com/infrastructure-adventures/centralized-ssh-login-to-google-compute-engine-instances-d00f8654f379

答案 1 :(得分:0)

要将公共ssh密钥转移到gcloud项目,您可以按照以下步骤操作:

  • 创建了一个新的SSH密钥:

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