簡體   English   中英

如何通過SSH連接到從自定義映像創建的GCE實例?

[英]How to SSH into a GCE Instance created from a custom image?

我在使用ssh登錄到從自定義映像創建的VM時遇到問題。

我按照從現有GCE實例創建圖像的步驟進行操作。

我已經成功創建了圖像,將其上傳到Google Cloud Storage並將其作為圖像添加到我的項目中,但是當我嘗試連接到新圖像時,我收到了“拒絕連接”。

我可以看到其他端口上運行的其他應用程序用於新映像,因此它似乎只是受影響的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 mark1@23.251.133.2 --
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 mark1@23.251.133.2 --
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

...雖然原始VM的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 mark@23.251.133.2 -- --zone=europe-west1-a
ssh: connect to host 23.251.133.2 port 22: Connection refused

我沒有想法,任何幫助都非常感激:)令人抓狂的事情是,我可以看到新的VM已經准備就緒應用程序,我只需要添加一些文件並設置一些cronjobs。 我想我可以做這個預圖像制作,但我希望能夠在以后登錄並修改它,而不需要花費1小時來創建圖像並每次都啟動新的實例。

你的忠實,馬克

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

您的實例可能未正確運行SSH服務器。 准備好的圖像可能有些不對勁。

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

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

你覆蓋了這些,但為了完整起見,還應檢查這些:

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

您可以將ssh設置與工作圖像的設置進行比較:

  • 從映像創建一個新磁盤(disk-mine-1)。
  • 從任何工作啟動映像創建一個新磁盤(disk-upstream-1),例如debian wheezy。
  • 將這兩者連接到您可以訪問的VM(在控制台或從cli)。
  • SSH進入虛擬機。
  • 掛載兩個映像(sudo mkdir / mnt / {mine,upstream} && sudo mount / dev / sdb1 / mnt / mine && sudo mount / dev / sdc1 / mnt / upstream)。 請注意,您的圖像是sdb還是sdc取決於您附加圖像的順序!
  • 尋找ssh配置之間的差異(diff -waur / mnt / {mine,upstream} / etc / ssh)。 除非你特別需要它們,否則不應該有。
  • 還要檢查您的圖像是否具有正確的/mnt/mine/etc/init.d/{ssh,generate-ssh-hostkeys}腳本。 它們也應該從/mnt/mine/etc/rc{S,2}.d(分別為S10generate-ssh-hostkeys和S02ssh)鏈接。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM