解決 SSH 無法登入 Google Compute Engine VM 出現 Permission denied

閱讀時間約 6 分鐘

前情提要

有一台遠古的 Google Cloud Engine VM 有點問題, OS 是 Debian 7 ,我要進去查看問題在哪邊,用 gcloud compute ssh 指令 SSH 進去,不過卻跳出 Permission denied (publickey) 的錯誤,Log 如下

username@host:~/.ssh % gcloud compute ssh --zone zone instance_name --project project
username@192.168.0.1: Permission denied (publickey).

Recommendation: To check for possible causes of SSH connectivity issues and get
recommendations, rerun the ssh command with the --troubleshoot option.

gcloud compute ssh instance_name --project=project --zone=zone --troubleshoot

Or, to investigate an IAP tunneling issue:

gcloud compute ssh instance_name --project=project --zone=zone --troubleshoot --tunnel-through-iap

ERROR: (gcloud.compute.ssh) [/usr/bin/ssh] exited with return code [255].

這問題以前都沒遇過就只能 Google 看看,從外太空搜尋到內子宮,搜尋結果大概是兩個方向

硬碟空間滿了

這篇有提到用 gcloud compute instances get-serial-port-output 看 system log 會有 No space left on device 的 Log

但是我看我的 VM 沒有這條 log ,不過因為沒辦法登入所以也沒辦法確認硬碟空間是不是用完。

可能有什麼阻擋了 SSH 連線

這篇一樣是 SSH 無法連線的問題,有提到可以用 Serial Console 登入來救援

是要用 startup script 在啟動時增加一個 user ,不過照做之後,Serial Console 卻沒辦法跳出登入的 prompt

檢查 disk 容量

此時進度又回到原點,不過發現 startup script 這個好東西

startup script 可以在啟動時執行一個 script 而且是 root 身份,所以就先用 startup script 在啟動時跑 df 看看容量(跑出的結果會出現在 Serial Console)

df 結果使用量只用了 50% 左右,所以可以排除硬碟空間用完的問題

想辦法開啟 SSH 密碼登入

之前已經有用 startup script 加了 user ,所以就想說何不把 SSH 密碼登入的功能打開

所以又用 startup script 去編輯 /etc/ssh/sshd_config

這時用 sed -i “51d” /etc/ssh/sshd_config刪掉 51 行的 PasswordAuthentication no

再用 echo PasswordAuthentication yes >> /etc/ssh/sshd_config 這條指打開 SSH 密碼登入功能

然後 reset VM 就成功開啟 SSH 密碼登入,就可以用剛剛設定的 user 登入看一下問題

發現真正的問題

可以登入後就心安多了,根據原本的 Permission denied 的錯誤,就想說應該是 ssh key 的問題

所以就到自己的帳號下把所有的 SSH key 刪掉,重新把本機的 key 上傳上去,but 還是沒辦法用 SSH key 登入

這時就矇了,只能再繼續查,此時查到說 SSH 可以用 -vvv 來啟用 debug mode 看更多錯誤訊息

debug3: authmethod_is_enabled publickey
debug1: Next authentication method: publickey
debug1: Offering public key: /Users/username/.ssh/google_compute_engine RSA SHA256: explicit
debug1: send_pubkey_test: no mutual signature algorithm
debug2: we did not send a packet, disable method

看起來 debug1: send_pubkey_test: no mutual signature algorithm 這段最有問題,就拿去 Google 一下

查到這篇,原來 server 上的 SSH 版本為 OpenSSH_6.0p1 , Mac 上的版本是 OpenSSH_9.4p1 新版的 SSH Client 預設是不會使用 SSH-RSA 演算法,因為這個演算法有安全疑慮,所以要在 ~/.ssh/config 加上

PubkeyAcceptedAlgorithms +ssh-rsa

這樣來開啟 SSH-RSA 演算法

開啟後,就可以正常使用 SSH Key 登入主機

結語

從外太空查到內子宮,花了一整天的時間在搞這個,結果只要一行 code 就能解決

不過這就是經驗,走過這一輪,Google Cloud 上什麼怪招都用上也算是小有收穫 😂




如果你喜歡我的文章,你可以使用以下的方式支持我

👀 追蹤我的社群帳號

👏 Vocus 支持我

  1. 追蹤
  2. 留言、收藏、按喜歡
  3. 贊助
raw-image

💰 使用下面的推薦連結註冊或申辦服務


avatar-img
17會員
55內容數
這是一系列關於院長在加拿大生活的大小事,希望大家會喜歡 😊。頭像底圖由 Adobe Firefly 產生。
留言0
查看全部
avatar-img
發表第一個留言支持創作者!
瘋人院院長的沙龍 的其他內容
yt-dlp 是 command line 下載 YouTube, TikTok, Instagram, X, PornHub 影片的好幫手,可以避免使用一些有廣告下載網站。
今天來介紹 BaseQi 420A 這款 microSD 轉接卡 這款轉接卡最大的亮點就是可以完美貼合 2023 Macbook Pro 的 SD 卡槽 所以可以作為 Macbook 額外的儲存空間使用
剪映目前版本(v2.4.0)並不支援雙語字幕 變通的做法有兩種 第一種:上下排字幕 第二種:輸出中文後再上英文
事情是這樣長輩用電腦硬碟快要掛了( S.M.A.R.T. 顯示 Bad ),所以就幫長輩換硬碟。那我就想說,既然要換新硬碟,那就換 SSD 好了。 因為長輩電腦的用途就是是文書、上網用,沒什麼特別的需求,原本硬碟是 500GB ,所以就買個美光 Crucial BX500 480GB 的 SSD來換
yt-dlp 是 command line 下載 YouTube, TikTok, Instagram, X, PornHub 影片的好幫手,可以避免使用一些有廣告下載網站。
今天來介紹 BaseQi 420A 這款 microSD 轉接卡 這款轉接卡最大的亮點就是可以完美貼合 2023 Macbook Pro 的 SD 卡槽 所以可以作為 Macbook 額外的儲存空間使用
剪映目前版本(v2.4.0)並不支援雙語字幕 變通的做法有兩種 第一種:上下排字幕 第二種:輸出中文後再上英文
事情是這樣長輩用電腦硬碟快要掛了( S.M.A.R.T. 顯示 Bad ),所以就幫長輩換硬碟。那我就想說,既然要換新硬碟,那就換 SSD 好了。 因為長輩電腦的用途就是是文書、上網用,沒什麼特別的需求,原本硬碟是 500GB ,所以就買個美光 Crucial BX500 480GB 的 SSD來換
你可能也想看
Google News 追蹤
Thumbnail
首先確定VS Code的版本,如果你的版本跟我一樣是1.92.0那麼你可以參考我的作法...
Thumbnail
OpenSSH 漏洞 CVE-2024-6387 已公佈。 如果利用此漏洞,則可以在無需身份驗證的情況下以特權遠端執行任意程式碼 此漏洞影響的是 Amazon Linux 2023 作業系統, Amazon Linux 1 和 Amazon Linux 2 不受影響。 https://ex
Thumbnail
在處理Linux時,遇到了Kubuntu 22.04的SSH連線問題。本文將介紹如何完整移除之前裝過的SSH並重新安裝以解決問題。
Thumbnail
當您在vCenter上發現Root使用者密碼過期的訊息時,該如何解決呢?本文將介紹如何透過SSH進入系統並立即變更密碼,以及如何將密碼設定成永不過期,避免再次遇到此問題。
Thumbnail
本文介紹了 Google Cloud 的網絡服務層級之間的差異。讀者可以瞭解到 Google Cloud 的 VPC(Virtual Private Cloud)具有全球級的特點,以及 Premium Tier 和 Standard Tier 之間不同的差異。
Thumbnail
在企業內部環境中,對服務和API的安全且高效率的存取至關重要。本文探討了GCP提供的 Private GoogleAccess、Private Service Connect、Serverless VPC Access、Private Services Access 的區別,以及它們如何使組織受益。
Thumbnail
ping 指令用於排除網路連線故障,但當你遇到無法時候時?不要慌,這裡有解決方法,錯誤的原因通常有這些: 未安裝 ping 程式 $PATH 環境變數中未設定 ping命令損壞 未使用 sudo 權限存取該指令 我們可以透過一些方法簡單的檢測並且解決,例如我們可以先驗證命令可用性: wh
XAUTHORITY=$HOME/.Xauthority export XAUTHORITY 啟動,解決  (base) oxooxooxoo@opopopopopop:~$ firefox
Thumbnail
本教程將引導您在 Ubuntu 系統上啟用 SSH、配置防火牆規則以允許入站連接,並更改預設 SSH 連接埠以增強安全性。包括更新系統、安裝OpenSSH伺服器、更改連接埠、設定防火牆、檢查規則和重新啟動服務等步驟。
Thumbnail
這個問題發生在我們開發Python的Websocket Server時, 使用以下的程式碼架設服務 start_server = websockets.serve(server, 'localhost', args.port) async with start_server:
Thumbnail
首先確定VS Code的版本,如果你的版本跟我一樣是1.92.0那麼你可以參考我的作法...
Thumbnail
OpenSSH 漏洞 CVE-2024-6387 已公佈。 如果利用此漏洞,則可以在無需身份驗證的情況下以特權遠端執行任意程式碼 此漏洞影響的是 Amazon Linux 2023 作業系統, Amazon Linux 1 和 Amazon Linux 2 不受影響。 https://ex
Thumbnail
在處理Linux時,遇到了Kubuntu 22.04的SSH連線問題。本文將介紹如何完整移除之前裝過的SSH並重新安裝以解決問題。
Thumbnail
當您在vCenter上發現Root使用者密碼過期的訊息時,該如何解決呢?本文將介紹如何透過SSH進入系統並立即變更密碼,以及如何將密碼設定成永不過期,避免再次遇到此問題。
Thumbnail
本文介紹了 Google Cloud 的網絡服務層級之間的差異。讀者可以瞭解到 Google Cloud 的 VPC(Virtual Private Cloud)具有全球級的特點,以及 Premium Tier 和 Standard Tier 之間不同的差異。
Thumbnail
在企業內部環境中,對服務和API的安全且高效率的存取至關重要。本文探討了GCP提供的 Private GoogleAccess、Private Service Connect、Serverless VPC Access、Private Services Access 的區別,以及它們如何使組織受益。
Thumbnail
ping 指令用於排除網路連線故障,但當你遇到無法時候時?不要慌,這裡有解決方法,錯誤的原因通常有這些: 未安裝 ping 程式 $PATH 環境變數中未設定 ping命令損壞 未使用 sudo 權限存取該指令 我們可以透過一些方法簡單的檢測並且解決,例如我們可以先驗證命令可用性: wh
XAUTHORITY=$HOME/.Xauthority export XAUTHORITY 啟動,解決  (base) oxooxooxoo@opopopopopop:~$ firefox
Thumbnail
本教程將引導您在 Ubuntu 系統上啟用 SSH、配置防火牆規則以允許入站連接,並更改預設 SSH 連接埠以增強安全性。包括更新系統、安裝OpenSSH伺服器、更改連接埠、設定防火牆、檢查規則和重新啟動服務等步驟。
Thumbnail
這個問題發生在我們開發Python的Websocket Server時, 使用以下的程式碼架設服務 start_server = websockets.serve(server, 'localhost', args.port) async with start_server: