控制台上的SSH谷歌云权限被拒绝(公钥),并带有谷歌云SDK文件错误

时间:2019-10-24 17:01:02

标签: linux ssh google-cloud-platform putty

我是云计算的新手,我试图使用SSH来控制我的VM实例,但是当我使用命令(与debug一起使用)

  

gcloud computing ssh my-instance-name --verbosity = debug

显示错误

  

调试:(gcloud.compute.ssh)[/ usr / bin / ssh]退出,返回代码   [255]。追溯(最近一次通话):文件   “ /google/google-cloud-sdk/lib/googlecloudsdk/calliope/cli.py”行   983,在执行中       资源= calliope_command.Run(cli = self,args = args)文件“ /google/google-cloud-sdk/lib/googlecloudsdk/calliope/backend.py”,   784行,在运行中       资源= command_instance.Run(args)文件“ /google/google-cloud-sdk/lib/surface/compute/ssh.py”,第262行,在   跑       return_code = cmd.Run(ssh_helper.env,force_connect = True)文件“ /google/google-cloud-sdk/lib/googlecloudsdk/command_lib/util/ssh/ssh.py”,   行1256,在运行中       引发CommandError(args [0],return_code = status)CommandError:[/ usr / bin / ssh]退出,返回码为[255]。错误:   (gcloud.compute.ssh)[/ usr / bin / ssh]退出,返回码为[255]。

我尝试解决此链接中的问题,但不起作用 https://groups.google.com/forum/#!topic/gce-discussion/O-c10TM4ZLM

3 个答案:

答案 0 :(得分:0)

这不是一个具体的答案,但我认为一开始您应该通过以下方式设置项目:

#include<bits/stdc++.h>
using namespace std;
#define M 1000000
bool marked[M];



bool sieve(int n)
{
    for (int i = 3; i * i <= n; i += 2)
    {
        if (marked[i] == false)
        {
            for (int j = i * i; j <= n; j += i + i)
            {
                marked[j] = true;
            }
        }
    }
}
bool isPrime(int n)
{
    if (n < 2)
        return false;
    if (n == 2)
        return true;
    if (n % 2 == 0)
        return false;
    return marked[n] == false;
}
int main()
{
    int i,j,k,n,m;
    cin>>n;
    for(i=0; i<n; i++)
    {
        cin>>m;
        if(isPrime(m))
            cout<<"prime"<<endl;
        else
            cout<<"N"<<endl;
    }
}

然后

gcloud config set project PROJECT_ID

此链接将很有用:

https://cloud.google.com/sdk/gcloud/reference/compute/ssh

答案 1 :(得分:0)

SSH错误代码255是GCP返回的常规错误。您可以尝试以下选项之一。

1。等待几分钟,然后重试。可能是

  • 实例尚未完成启动。

  • SSH密钥的元数据尚未完成传播到项目或实例。

    • 访客环境尚未读取SSH密钥元数据。

2。确认对实例的SSH访问没有被防火墙阻止

gcloud compute firewall-rules list | grep "tcp:22"

如有必要,创建防火墙规则以允许给定VPC网络,子网或实例标签使用TCP 22。

gcloud compute firewall-rules create ssh-allow-incoming --priority=0 --allow=tcp:22 --network=[VPC-Network]

3。确保根卷没有磁盘空间不足。磁盘空间不足时,console log中将显示以下消息:

  

...设备上没有剩余空间...

     

... google-accounts:错误调用响应处理程序的异常。   [Errno 2]在['/ tmp','/ var / tmp',   '/ usr / tmp','/']...

4。确保实例尚未用完内存

5。验证是否为projectinstance设置了临时SSH密钥元数据。

最后,您可以遵循他们的任何supportedthird-party方法

答案 2 :(得分:0)

假设您具有正确的IAM权限,那么GCP可以更轻松且更容易地使用OSlogin ssh进入实例,而不是管理ssh密钥

在云外壳中,输入

gcloud compute --project PROJECTID project-info add-metadata --metadata enable-oslogin=TRUE

这将在项目中的所有实例上启用OSLogin,而不是使用ssh密钥,gcp将检查您的IAM权限并基于这些权限进行身份验证。

如果您不是项目所有者,请确保您具有Cloud IAM中的compute.osloginviewer或管理员权限

一旦启用,请使用发布的命令再次尝试通过SSH进入实例。