2015-02-23 57 views
2

我已經安裝了2個谷歌計算引擎實例,並且我可以通過使用由gcloud compute ssh命令創建的密鑰輕鬆地在兩者中進行SSH。但是,當我嘗試以下方法...谷歌雲引擎,兩個centos7實例之間的ssh失敗

[email protected] ~] ssh-keygen -q -t rsa -N "" -f ~/.ssh/id_rsa 
[email protected] ~] cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys 
[email protected] ~] chmod 0600 ~/.ssh/authorized_keys 
[email protected] ~] ssh-copy-id -i ~/.ssh/id_rsa.pub [email protected] 

...它不工作,和ssh-copy-id命令顯示如下信息:

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

如果我複製google_compute_engine私人和公共關鍵在嘗試主,並可以用它來登錄這兩個實例,但我發現通過網絡移動私鑰是不能令人滿意的。我想這與此有些相關topic

這怎麼解決?

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

回答

2
  1. 使用CentOS7圖像;以及CentOs7作爲本地主機:

    gcloud compute instances create try-master --image centos-7 
    gcloud compute instances create try-slave-1 --image centos-7 
    

這可以通過初始SSH密鑰建立期間使用認證轉發來解決:

  1. Se在本地機器上一次認證轉發(注意「-A」標誌)。首先,你需要運行:再次

    eval `ssh-agent -s`

    然後

    ssh-add ~/.ssh/google_compute_engine 
    gcloud compute ssh --ssh-flag="-A" try-master 
    
  2. 執行上述步驟(從凱基到ssh-copy-id命令) [email protected] ~] ssh-keygen -q -t rsa -N "" -f ~/.ssh/id_rsa [email protected] ~] cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys [email protected] ~] chmod 0600 ~/.ssh/authorized_keys [email protected] ~] ssh-copy-id -i ~/.ssh/id_rsa.pub [email protected] [email protected] ~] exit

  3. 登錄到試戴沒有SSH認證轉發的主機: gcloud compute ssh try-master [email protected] ~] ssh [email protected] [email protected] ~]

初始方法不起作用,因爲GCE實例默認只允許公鑰認證。因此,ssh-copy-id無法通過try-slave進行身份驗證來複制新的公鑰,因爲在try-slave中沒有可用的try-master中配置的公鑰。

使用認證轉發,本地機器的私鑰從本地機器轉發到try-master,然後從那裏轉到try-slave。 try-slave中的GCE帳戶管理器將從您的項目元數據中獲取公鑰,因此ssh-copy-id將能夠複製工作。

+0

我已重新發布您的答案爲「答案」,以關閉此問題。 – 2015-02-24 07:07:24

+0

這仍然失敗 'ssh-copy-id -i〜/ .ssh/id_rsa.pub name @ instance' '/ usr/bin/ssh-copy-id:INFO:嘗試使用新密鑰登錄(s),過濾掉任何已經安裝的東西'/ usr/bin/ssh-copy-id:INFO:1鍵仍然需要安裝 - 如果系統提示您現在要安裝新的鑰匙' '權限被拒絕(publickey,gssapi-keyex,gssapi-with-mic).' – gotmikhail 2015-03-27 15:25:13

+0

它已經工作了嗎? – lvthillo 2015-09-22 16:35:14