2014-02-19 56 views
6

我遇到了使用ssh登錄到自定義映像創建的虛擬機的問題。我按照步驟creating an image from an existing GCE instance如何將SSH從自定義映像創建到GCE實例中?

我已成功創建圖像,並將其上傳到Google雲端存儲並將其作爲圖像添加到我的項目中,但當我嘗試連接到新圖像時,出現「拒絕連接」。

我可以看到其他應用程序在其他端口上運行的新圖像,所以它似乎只是ssh受到影響。

我做的步驟如下:

...create an image from existing GCE instance (one I can log into fine via ssh)..then: 

gcutil --project="river-ex-217" addimage example2 http://storage.googleapis.com/example-image/f41aca6887c339afb0.image.tar.gz 
gcutil --project="river-ex-217" addinstance --image=example2 --machinetype=n1-standard-1 anothervm 
gcutil --service_version="v1" --project="river-ex-217" ssh --zone="europe-west1-a" "anothervm" 

,輸出:

INFO: Running command line: ssh -o UserKnownHostsFile=/dev/null -o CheckHostIP=no -o StrictHostKeyChecking=no -i /Users/mark1/.ssh/google_compute_engine -A -p 22 [email protected] -- 
ssh: connect to host 23.251.133.2 port 22: Connection refused 

我試圖刪除在另一個建議SO回答sshKeys元數據,並重新連接該這樣做:

INFO: Updated project with new ssh key. It can take several minutes for the instance to pick up the key. 
INFO: Waiting 120 seconds before attempting to connect. 
INFO: Running command line: ssh -o UserKnownHostsFile=/dev/null -o CheckHostIP=no -o StrictHostKeyChecking=no -i /Users/mark1/.ssh/google_compute_engine -A -p 22 [email protected] -- 
ssh: connect to host 23.251.133.2 port 22: Connection refused 

然後,我嘗試在另一個區域的第一個實例,它適用於新密鑰:

gcutil --service_version="v1" --project="river-ex-217" ssh --zone="europe-west1-b" "image1" 

這兩種情況都與22端口運行相同的「默認」的網絡上運行,和SSH工程爲圖像從創建的第一個實例。

我試圖從另一個實例和我的本地機器NC指令,它沒有顯示輸出:

nc 23.251.133.2 22 

...而原始虛擬機的IP顯示輸出:

nc 192.157.29.255 22 
SSH-2.0-OpenSSH_6.0p1 Debian-4 

我我試圖再次重新制作圖像並重新添加實例,沒有任何區別。

我試過登錄到第一個實例,並將用戶切換到該機器上的一個(應該與第二臺機器相同?),然後從那裏登錄到ssh。

WARNING: You don't have an ssh key for Google Compute Engine. Creating one now... 
Enter passphrase (empty for no passphrase): 
Enter same passphrase again: 
INFO: Updated project with new ssh key. It can take several minutes for the instance to pick up the key. 
INFO: Waiting 300 seconds before attempting to connect. 
INFO: Running command line: ssh -o UserKnownHostsFile=/dev/null -o CheckHostIP=no -o StrictHostKeyChecking=no -i /home/mark/.ssh/google_compute_engine -A -p 22 [email protected] -- --zone=europe-west1-a 
ssh: connect to host 23.251.133.2 port 22: Connection refused 

我的想法,任何幫助非常感謝:)發瘋thiing是我可以看到新的VM是住在一起的應用程序準備好了,我只需要幾個文件添加到它,並建立一些cronjobs。我想我可以做這個預先製作圖像,但我希望能夠在以後的日期登錄並修改它,而不需要花費1小時創建圖像並每次啓動新的實例。

此致, 馬克

+0

具有相同的問題。 –

+0

我已經在GoogleGroup上發佈了,一個Google人正在使用「gcutil getserialportoutput 」的輸出來幫助追蹤它。 – Mark

+0

我剛剛刪除了持久磁盤並重新開始:/幸運的是我們有一個相當不錯的create_dev_env腳本,否則這實際上不會是一個選項。 –

回答

4

這個問題似乎是有關如何調試與圖像SSH連接問題,所以這裏是我的答案。

看來您的實例可能沒有正確運行SSH服務器。準備好的圖像可能有些不妥。

可能有用的調試問題要問自己:

  • 你使用gcimagebundle捆綁了圖像或手工做的嗎?考慮使用該工具來確保沒有錯過任何東西。
  • 在捆綁映像之前,您是否更改過有關ssh服務器配置的任何內容?
  • 當實例啓動時,檢查它的控制檯輸出是否有ssh消息 - 它應該提到重新生成密鑰,啓動sshd守護進程並監聽端口22.如果它沒有或抱怨與ssh有關的事情,則應該跟進那。

您覆蓋這些,但爲了完整起見,這些也應檢查:

  • 你能以其他方式到達VM它出現之後?它是響應Web服務器端口(如果有)或響應ping?
  • 仔細檢查您VM所在的網絡是否允許從您連接的主機進行SSH(端口22)訪問。

您可以將SSH設置比較,一個工作圖像的:

  • 創建從圖像中一個新的磁盤(磁盤礦-1)。
  • 從任何可用的啓動映像創建一個新磁盤(disk-upstream-1),例如debian wheezy。
  • 將這兩個附加到您可以訪問的VM(無論是在控制檯還是從cli)。
  • SSH進入虛擬機。
  • 安裝兩個圖像(須藤MKDIR/MNT/{礦,上游} & &須藤設置/ dev/SDB1的/ mnt /礦& &須藤設置/ dev/SDC1的/ mnt /上游)。請注意,無論您的圖像是sdb還是sdc,都取決於您附加圖像的順序!
  • 查找ssh config(diff -waur/mnt/{mine,upstream}/etc/ssh)之間的差異。除非你特別需要它們,否則不應該有任何東西。
  • 另請檢查您的圖片是否有適當的/mnt/mine/etc/init.d/{ssh,generate-ssh-hostkeys}腳本。它們也應該從/mnt/mine/etc/rc{Sdi}.d(分別爲S10generate-ssh-hostkeys和S02ssh)鏈接。
相關問題