谷歌云引擎,两个centos7实例之间的ssh失败

时间:2015-02-23 20:04:44

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

我已经设置了2个Google Compute Engine实例,我可以使用 gcloud compute ssh 命令创建的密钥轻松地在两个实例中进行SSH。但是当我尝试以下内容时......

myself@try-master ~] ssh-keygen -q -t rsa -N "" -f ~/.ssh/id_rsa
myself@try-master ~] cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
myself@try-master ~] chmod 0600 ~/.ssh/authorized_keys
myself@try-master ~] ssh-copy-id -i ~/.ssh/id_rsa.pub myself@try-slave-1

...它不起作用,ssh-copy-id显示以下消息:

Permission denied (publickey,gssapi-keyex,gssapi-with-mic)

如果我在try-master上复制google_compute_engine私钥和公钥,并且可以使用它来登录这两个实例,但我发现通过网络移动私钥并不令人满意。我想这与这个topic有点相关:

如何解决这个问题?

[1] https://cloud.google.com/compute/docs/instances#sshbetweeninstances

1 个答案:

答案 0 :(得分:2)

  1. 使用CentOS7图像和CentOs7作为本地主机:

    gcloud compute instances create try-master --image centos-7
    gcloud compute instances create try-slave-1 --image centos-7
    
  2. 这可以通过在初始SSH密钥设置期间使用身份验证转发来解决:

    1. 在本地计算机上设置一次身份验证转发(请注意" -A"标志)。首先你需要运行:

      eval `ssh-agent -s`

      然后

      ssh-add ~/.ssh/google_compute_engine
      gcloud compute ssh --ssh-flag="-A" try-master
      
    2. 执行上述步骤(从keygen到ssh-copy-id) myself@try-master ~] ssh-keygen -q -t rsa -N "" -f ~/.ssh/id_rsa myself@try-master ~] cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys myself@try-master ~] chmod 0600 ~/.ssh/authorized_keys myself@try-master ~] ssh-copy-id -i ~/.ssh/id_rsa.pub myself@try-slave-1 myself@try-master ~] exit

    3. 再次登录到没有SSH身份验证转发的try-master: gcloud compute ssh try-master myself@try-master ~] ssh myself@try-slave-1 myself@try-slave-1 ~]
    4. 初始方法不起作用,因为GCE实例默认只允许公钥验证。因此,ssh-copy-id无法通过try-slave进行身份验证来复制新的公钥,因为在try-slave中没有配置try-master中的公钥。

      使用身份验证转发,本地计算机上的私钥将从本地计算机转发到try-master,并从那里转发到try-slave。 try-slave中的GCE帐户管理器将从项目元数据中获取公钥,因此ssh-copy-id将能够复制工作。