看板 Linux 關於我們 聯絡資訊
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 之後也補上伺服器的資料上。 一開始遇到想說,明明才剛重灌兩三天,怎麼就有安全性上的問題,花了一段時間去確認 可能是哪個環節出了問題,幸好最後不是有資安問題。另外有知道任何除了上述所講的解 法,或者一些相關資料,歡迎留言分享。 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 220.143.89.220 (臺灣) ※ 文章網址: https://www.ptt.cc/bbs/Linux/M.1636388432.A.225.html
ScottOAO: Server應該用ssh ca去簽host key 11/11 20:25