SSH-遠端公鑰指紋已改變 檢查分享 - Linux

Hamiltion avatar
By Hamiltion
at 2021-11-09T00:20

Table of Contents

https://forum.community.tw/t/topic/190 論壇版
TW Community 是我自架的論壇,可以當作一般論壇使用
也可以當作個人部落格的留言系統,
能用 markdown 並且也能自動將程式碼上色,
歡迎大家來參觀並玩玩看,
如果有個人部落格(電腦相關的)需要留言系統,也可以來信聯絡

以下正題
最近在登入遠端運算資源時,SSH 跳出警告
WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED!

會跳出這個警告是因為,從伺服器拿到的公鑰指紋對不上,目前系統所記錄的,所以
SSH 懷疑是不是有中間人攻擊 ,並禁止此次登入。注意:不一定每次出現這個訊息就是
有問題,還要配合伺服器的訊息才能判斷,例如更新或重新設定 SSH 伺服器設定,可能
就會讓該指紋改變,又或者晚點介紹這次遇到的狀況。但幸好該密碼有配合 TOTP ,遇到
這狀況都沒使用該 TOTP 來登入,所以帳號應該也還是安全的,所以才可以慢慢的去查錯
,並通知伺服器管理員。

問題
重複試著登入,有時候可以登入,但有時候會跳出不同的公鑰指紋,另外將 wifi 換成手
機網路,但情況還是一樣,加上伺服器公布的指紋只有 RSA/ECDSA 但我所遇到的問題卻
是 ED25519,到這邊開始懷疑並不是安全性的問題。到這裡就寫信跟伺服器管理員詢問,
並把一些資料我所能找到的分享出來

不同的公鑰指紋?
遇到這個問題時,有想到為了負載的關係,登入伺服器有五台,所以我就直接登入特定的
伺服器,而非讓他去自動分配,並記錄下來他所回報的公鑰指紋。而此時有發現其中一台
我是可以直接登入成功的,代表其中一台跟我之前登入的是有吻合的。但這裡還不能完全
確定,因為我之前在第一次登入時並沒有去確認指紋是否吻合(錯誤示範),但所記錄
的 RSA/ECDSA 是有符合的

確認所記錄的公鑰指紋
```
# 列出所有的指紋 list all finger print
ssh-keygen -l -f ~/.ssh/known_hosts
# 列出特定的伺服器 list finger print of the specific server
ssh-keygen -l -f ~/.ssh/known_hosts -F <伺服器>
```
利用這個去確認之前紀錄是否吻合伺服器所公開的資料,那 RSA/ECDSA 部分是吻合的,
但多紀錄了 ED25519 。這邊有去確認另一台電腦的紀錄,但另一台只有紀錄 RSA 的部分


只刪掉紀錄中的 ED25519
這其實是伺服器管理員讓我試試看的,那刪掉後其實第一次都可以登入,也沒有跳出任何
需要檢查公鑰指紋的提示,或第一次登入需要確認的訊息也沒有,代表 RSA/ECDSA 檢查
有通過就可以登入了。但在登入之後會發現 known_hosts 會再次被加入 ED25519(登入
後才會被加入),所以只要下次登入到不同台,警告又會跳出來了。
利用 `ssh -vvv <server>` (詳見論壇版,但吻合上面所述)去檢查發生了什麼事。

當有 ED25519 時,會出現
order_hostkeyalgs: have matching best-preference key type ssh-ed25519
ED25519 不同,SSH 就會阻止了,不會看 RSA/ECDSA

暫時解法
可以看到是 ED25519 這一個會被先確認,所以如果把 ED25519 取消,或者改一下順序會
怎麼樣呢?

- 取消 ED25519:
ssh -o HostKeyAlgorithms="-*ed25519*" <server> ,取消掉就可以像之前一樣的登
入了
- 換一下順序:
ssh -o HostKeyAlgorithms="ssh-rsa,ecdsa-sha2-nistp256,ssh-ed25519" <server>
這樣出乎我的意料,這樣也過了,但用 -vvv 去看發現,他前面檢查完 RSA 就通過了
,登入後如果是不同台就會將所紀錄的 ED25519 換掉
/Users/yhmtsai/.ssh/known_hosts:21: Removed ED25519 key for host <server>
Adding new key for <server> to /Users/yhmtsai/.ssh/known_hosts: ssh-ed25519

SSH 版本?
目前應該是覺得 ssh 的版本導致他預設的順序不一樣,會出現警告的那台是
OpenSSH_8.6p1, LibreSSL 2.8.3 ,而另一台則是 OpenSSH_7.6p1 Ubuntu-4ubuntu0.3,
OpenSSL 1.0.2n ,有試過 ssh -Q key 但看起來一樣,而 ssh -Q sig 只有在 8.6 有,
如果有人知道怎麼查詢預設的順序或相關的東西的話,再麻煩留言告知了,謝謝

結語
有將前面所發現的東西,也就是不同的登入伺服器雖然有共通的 RSA/ECDSA 但 ED25519
卻是獨立的,通知伺服器管理員,並提供 ssh -o HostKeyAlgorithms="ed25519"
<server> ,就可以強迫登入使用 ED25519 ,他們目前有確認我前面提供的 ED25519 指
紋的確是每台所擁有的,所以登入是正常的,另外他們會去看能不能也把 ED25519 也一
樣共用,至少會把 ED25519 之後也補上伺服器的資料上。

一開始遇到想說,明明才剛重灌兩三天,怎麼就有安全性上的問題,花了一段時間去確認
可能是哪個環節出了問題,幸好最後不是有資安問題。另外有知道任何除了上述所講的解
法,或者一些相關資料,歡迎留言分享。

--
Tags: Linux

All Comments

Tracy avatar
By Tracy
at 2021-11-09T23:30
Server應該用ssh ca去簽host key

請問firewalld的連接埠與來源連接埠區別

Oliver avatar
By Oliver
at 2021-11-07T12:39
請問這兩個區別在哪裡? 從名詞上看起來都是打開 port,但是差別在哪裡? 一個往內一個往外嗎? 目前 Waydroid 要能連上網路要用來源連接埠, 用連接埠則無效。 - ...

Fedora 34 切換桌面

Linda avatar
By Linda
at 2021-11-05T20:33
Fedora 34 的相鄰桌面之間,可以插入新的桌面嗎? Feodra 33 及之前的版本,都可以。但 Fedora 34 的新型 橫向桌面,就不知道如何插入新的桌面了? - ...

wsl2 windows10 archlinux開啟

Isla avatar
By Isla
at 2021-11-04T06:34
目前windows10要使用wsl2 的時候都需要參與insider program. 最近wsl一直開不起來 但是也沒有扣頂的需要就先不理他了 今天花了時間看了一下 才發現是因為insider program的時間到了,只能以更新到windows11的方式解決 就只好更新了,然後問題也解決了,在這裏分享, ...

Kubernetes in Docker 存取服務

Quintina avatar
By Quintina
at 2021-11-01T17:28
我最近在研究 VMWare Tanzu Community Edition, 在 Ubuntu 裝好後發現它是基於 Kubernetes in Docker, 它會新增一個 docker bridge network - kind (如 subnet: 172.20.0.0/16), 且 host 有一個新的 ...

Waydroid 無法安裝 LINE LITE

Agnes avatar
By Agnes
at 2021-10-30T22:15
以前使用 Anbox 可以正常地安裝 LINE LITE, 這樣才能同時在手機和電腦使用 LINE。 但我打 waydroid app install andlt; 我的 APK 檔 andgt;, 卻一直沒有出現她的縮圖。 請問要怎麼解呢? - ...