SSH協議怎么樣?為什么正常的連接突然報錯Identification問題
作者:Java小陳
兼具操作簡單和傳輸效率高的優點,但它們都存在相同的問題,即明文傳輸數據帶來的安全隱患。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
- 執行 ssh-keygen 之后就會打印發現的和指定服務相關的配置了。然后就會進行更新,我們再次連接就會讓我們在執行一次確認了,后面就可以正常操作了。
責任編輯:武曉燕
來源:
今日頭條