SSH協議怎麼樣?為什麼正常的連線突然報錯Identification問題

2023.09.26

SSH協議怎麼樣?為什麼正常的連線突然報錯Identification問題

兼具操作簡單和傳輸效率高的優點,但它們都存在相同的問題,即明文傳輸資料帶來的安全隱患。SSH採用加密傳輸資料、提升認證強度等手段,克服了Telnet和FTP應用中的安全性問題,實現了安全的遠端登入和檔案傳輸業務。

SSH

  • SSH 主要是一種連線協議,為什麼我們需要SSH呢?,傳統的協定傳輸的內容一旦被截獲就會完全暴露,內容將會被揭露出去。SSH協定透過對網路資料進行加密和驗證,建立SSH客戶端和SSH伺服器之間的安全隧道,在不安全的網路環境中為網路服務提供了安全的傳輸通道。

兼具操作簡單和傳輸效率高的優點,但它們都存在相同的問題,即明文傳輸資料帶來的安全隱患。SSH採用加密傳輸資料、提升認證強度等手段,克服了Telnet和FTP應用中的安全性問題,實現了安全的遠端登入和檔案傳輸業務。

  • 但我在使用SSH的過程中居然會出現Remote Host Identification Has Changed error and solution 。既然有了問題就得解決,接下來我們來看看問題是如何解決的。

場景

  • 本來透過ssh 連線的服務突然連結不上了,這可打的我措手不及。

  • 這台服務是我的虛擬機,之前連線都是沒有問題的,而且也確認了使用者名稱是合法的,還沒讓我輸入密碼所以不存在密碼錯誤的情況。

問題定位

  • 透過問題報錯語句[Remote Host Identification Has Changed error and solution] 。其中identification 表示認證的意思,翻譯過來就是認證失敗了。好端端的怎麼會認證失敗呢?
  • 隨後就是自我反省的日子了。反思好久還好朋友給我提醒會不會跟你重裝系統有關係呢?結合這個問題場景感覺有點關係,之前因為系統版本升級所以就做了一個重裝系統的操作。現在想來雖然IP還是那個IP,但服務已然不是之前的服務了。
  • 經過翻閱資料發現問題不是重裝系統導致的,確切的說並不是重裝系統直接導致的,而​​是因為我們重裝了OpenSSH 導致服務認證失敗了。

ssh存儲

  • 在解決這個問題之前我們先開個小灶, 你知道ssh 連線的資訊儲存在哪裡嗎?你是否注意到當第一次連接某個服務的時候需要你輸入yes or no 的確認

  • 第一次連線需要我們確認是否繼續連接,輸入yes 後伺服器的連線資訊就會追加到known hosts 中,對應的位置是~/.ssh/known_host。

  • 打開檔案看一看就能發現,是每個服務的一種簽名存儲,所以當我們重新安裝了OpenSSH 後這裡的簽名就失效了。

回到正題

  • 知道了ssh 儲存簽章位置過期導致的連線不上了,那麼就好解決了我們直接刪除192.168.0.253 對應的簽章就可以了。但問題還是有點小麻煩,上面我們也看到了同一個IP 好像有好多個簽章。這該刪除哪一個呢?理論上全部就可以了。還有個問題就是需要我們定位刪除也很麻煩。好在linux OpenSSH 給了我們一個指令。
ssh-keygen -R {ssh.server.ip.address} -f file
  • 1.

  • 執行ssh-keygen 之後就會列印發現的和指定服務相關的配置了。然後就會進行更新,我們再次連線就會讓我們在執行一次確認了,後面就可以正常操作了。