GCP:如何使用CLI与SSH连接到新创建的VM?

我想我在下面的脚本中缺少一个步骤。

我第一次运行它,就可以很好地创建VM,但是拒绝连接。即使我在创建虚拟机后等待了十分钟,它仍然被拒绝。

但是,如果我使用GCP控制台手动连接“在浏览器窗口中打开”,则会收到消息“正在传输SSH密钥...”,并且连接正常。完成此步骤后,脚本可以正常连接。

我应该在此脚本中添加些什么,以使其能够正常工作而不必从控制台手动连接?

#!/bin/bash
MY_INSTANCE="janne"
MY_TEMPLATE="dev-tf-nogpu-template"
HOME_PATH="/XXX/data/celeba/"


# Create instance
gcloud compute instances create $MY_INSTANCE --source-instance-template $MY_TEMPLATE

# Start instance 
gcloud compute instances start $MY_INSTANCE

# Copy needed directories & files
gcloud compute scp ${HOME_PATH}src/ $MY_INSTANCE:~ --recurse --compress
gcloud compute scp ${HOME_PATH}save/ $MY_INSTANCE:~ --recurse --compress
gcloud compute scp ${HOME_PATH}pyinstall $MY_INSTANCE:~
gcloud compute scp ${HOME_PATH}gcpstartup.sh $MY_INSTANCE:~

# Execute startup script
gcloud compute ssh --zone us-west1-b $MY_INSTANCE --command "bash gcpstartup.sh"

# Connect over ssh
gcloud compute ssh --project XXX --zone us-west1-b $MY_INSTANCE

此脚本的完整输出为:

(base) xxx@ubu-dt:/XXX/data/celeba$ bash gcpcreate.sh
Created [https://www.googleapis.com/compute/v1/projects/XXX/zones/us-west1-b/instances/janne].
NAME   ZONE        MACHINE_TYPE   PREEMPTIBLE  INTERNAL_IP  EXTERNAL_IP  STATUS
janne  us-west1-b  n1-standard-1               XXX   XXX  RUNNING
Starting instance(s) janne...done.                                                                                                                                               
Updated [https://compute.googleapis.com/compute/v1/projects/xxx/zones/us-west1-b/instances/janne].
ssh: connect to host 34.83.3.161 port 22: Connection refused
lost connection
ERROR: (gcloud.compute.scp) [/usr/bin/scp] exited with return code [1].
ssh: connect to host 34.83.3.161 port 22: Connection refused
lost connection
ERROR: (gcloud.compute.scp) [/usr/bin/scp] exited with return code [1].
ssh: connect to host 34.83.3.161 port 22: Connection refused
lost connection
ERROR: (gcloud.compute.scp) [/usr/bin/scp] exited with return code [1].
ssh: connect to host 34.83.3.161 port 22: Connection refused
lost connection
ERROR: (gcloud.compute.scp) [/usr/bin/scp] exited with return code [1].
ssh: connect to host 34.83.3.161 port 22: Connection refused
ERROR: (gcloud.compute.ssh) [/usr/bin/ssh] exited with return code [255].
ssh: connect to host 34.83.3.161 port 22: Connection refused
ERROR: (gcloud.compute.ssh) [/usr/bin/ssh] exited with return code [255].

编辑:添加gcloud版本信息

(base) bjorn@ubu-dt:/media/bjorn/data/celeba$ gcloud version
Google Cloud SDK 269.0.0
alpha 2019.10.25
beta 2019.10.25
bq 2.0.49
core 2019.10.25
gsutil 4.45
kubectl 2019.10.25
marimount 回答:GCP:如何使用CLI与SSH连接到新创建的VM?

我找到的解决方案是:等待。

对于OS登录,SSH在实例启动后约20秒钟开始工作。 对于非OS登录,大约需要一分钟。

所以我只是在gcloud计算实例开始$ MY_INSTANCE

之后添加了它
[TestFixture(typeof(int),"abc","xyz")]
public class GenericTestFixture<T>
{
    private readonly string _aa;
    private readonly string _bb;


    public GenericTestFixture(string a,string b)
    {
        _aa = a;
        _bb = b;
    }


    [Test]
    public void Test1()
    {
        Debug.WriteLine($"aa is {_aa},bb is {_bb},t is {typeof(T)}");
    }


    [TestCase(1)]
    public void TestMethod(int c)
    {
        Assert.AreEqual(c,1);
    }
}
,

通过控制台连接时,它将为您管理密钥。

您的最新评论使我相信,当您从控制台连接时,您正在生成SSH密钥,并且它以某种方式允许您运行脚本,我建议您看一下如何管理SSH keys在元数据中创建并创建自己的SSH密钥以通过SDK进行访问。

如果通过SDK在脚本之外,您也无法直接进行SSH,那么我认为这是由于生成密钥的相同原因。

还请确保在使用SDK时,服务帐户具有正确的权限。

让我知道。

本文链接:https://www.f2er.com/3168749.html

大家都在问