遇到該問題:kex_exchange_identification: read: Connection reset`的解決辦法

kex_exchange_identification: read: Connection reset` 是一個非常常見的 SSH 連接錯誤。它表明在 SSH 客戶端和服務器建立安全連接的初始階段(密鑰交換,Key Exchange),連接就被對方(服務器)強制關閉了。

這通常不是客戶端的問題,而是服務器端因為某些原因拒絕了你的連接請求。

下面我們來系統地排查和解決這個問題,從最常見到最不常見的原因逐一分析。

1. 服務器端的 SSH 服務沒有運行或崩潰

這是最常見的原因。sshd 服務可能沒有啟動,或者啟動后因為某種錯誤退出了。

解決方案(在被連接的電腦,即 10.49.71.114 的 WSL 中操作):

  1. 檢查 SSH 服務狀態

    sudo service ssh status
    # 或者
    sudo systemctl status ssh
    
    • 如果你看到 Active: active (running),說明服務正在運行。
    • 如果你看到 Active: inactive (dead) 或類似信息,說明服務沒有運行。
  2. 啟動/重啟 SSH 服務

    • 如果服務未運行,啟動它:
      sudo service ssh start
      # 或者
      sudo systemctl start ssh
      
    • 如果服務正在運行但你懷疑它有問題,重啟它:
      sudo service ssh restart
      # 或者
      sudo systemctl restart ssh
      
  3. 設置為開機自啟(推薦)
    為了避免每次重啟 WSL 都要手動開啟,可以設置服務自啟動。但 WSL1 不支持 systemd,WSL2 需要額外配置才能支持。一個簡單的替代方法是編輯 ~/.bashrc~/.zshrc 文件,在末尾加入:

    # 檢查 sshd 是否在運行,如果沒有則啟動
    if ! pgrep -x "sshd" > /dev/null; thensudo service ssh start
    fi
    

2. 防火墻問題

Windows 防火墻或者 WSL 內部的防火墻(如 ufw)可能阻止了 2222 端口的連接。

解決方案:

a) Windows 防火墻(最可能的原因)

你需要在作為服務器的 Windows 電腦上(即 10.49.71.114)添加入站規則,允許外部訪問 2222 端口。

  1. 管理員身份打開 PowerShell。
  2. 執行以下命令,添加一個允許 TCP 流量訪問 2222 端口的防火墻規則:
    New-NetFirewallRule -DisplayName "WSL SSH Inbound" -Direction Inbound -Protocol TCP -LocalPort 2222 -Action Allow
    
    這條命令會創建一個名為 “WSL SSH Inbound” 的規則。

b) WSL 內部的防火墻(如果安裝了的話)

  1. 在 WSL 終端中檢查 ufw 狀態:
    sudo ufw status
    
  2. 如果 ufw 是激活狀態 (Status: active),需要允許 2222 端口:
    sudo ufw allow 2222/tcp
    

3. SSH 配置問題 (/etc/ssh/sshd_config)

服務器端的 SSH 配置文件可能設置了過于嚴格的連接限制。

解決方案(在 WSL 中操作):

  1. 編輯配置文件:

    sudo nano /etc/ssh/sshd_config
    
  2. 檢查以下幾個關鍵配置:

    • Port 2222:確保端口號是你正在使用的 2222
    • ListenAddress 0.0.0.0:確保 SSH 服務監聽所有網絡接口,這樣局域網才能訪問。如果它被設置為 127.0.0.1,就只有 WSL 內部能訪問。
    • AllowUsersDenyUsers:檢查是否有這些行。如果你設置了 AllowUsers,請確保你的用戶名 hujh 在列表里。如果沒有特殊需求,建議先將這兩行注釋掉(在行首加 #)。
    • MaxStartups:這個值定義了允許的并發未認證連接數。默認值通常是 10:30:100。如果短時間內有太多失敗的連接嘗試,可能會觸發限制。可以嘗試將其改得寬松一些,比如 MaxStartups 30:30:100,但這通常不是主要原因。
  3. 修改配置后,必須重啟 SSH 服務才能生效:

    sudo service ssh restart
    

4. IP 地址問題

你需要確保你連接的 IP 地址 10.49.71.114 確實是 WSL 所在宿主機 Windows 的局域網 IP。

WSL2 在默認配置下,其網絡是 NAT 模式,它有自己的一個虛擬 IP 地址,通常是 172.x.x.x 網段。從局域網的其他電腦直接訪問這個虛擬 IP 是不行的。你必須通過宿主機 Windows 的 IP 地址,并設置端口轉發

你已經在 Windows 上監聽了 2222 端口,這很可能就是通過端口轉發實現的。現在需要確認這個機制是否正確。

解決方案(在作為服務器的 10.49.71.114 電腦上操作):

  1. 獲取 WSL 的 IP 地址:在 WSL 終端中運行 ip addrhostname -I,記下這個 IP(例如 172.20.13.14)。
  2. 獲取 Windows 的局域網 IP 地址:在 Windows 的 CMD 或 PowerShell 中運行 ipconfig,找到連接到局域網的那個網絡適配器(通常是“以太網適配器”或“無線局 v?c 網適配器”),確認其 IPv4 地址就是 10.49.71.114
  3. 檢查/設置端口轉發:你需要一個規則,將從 10.49.71.114:2222 進來的流量轉發到 [WSL的IP]:22(假設 WSL 里的 SSH 服務運行在默認的 22 端口)。
    • 管理員身份打開 PowerShell。
    • 運行以下命令來設置端口轉發(請將 [WSL的IP] 替換為你在步驟1中找到的真實IP):
      netsh interface portproxy add v4tov4 listenport=2222 listenaddress=0.0.0.0 connectport=22 connectaddress=[WSL的IP]
      
      例如:netsh interface portproxy add v4tov4 listenport=2222 listenaddress=0.0.0.0 connectport=22 connectaddress=172.20.13.14
    • 重要:每次重啟 WSL2,它的 IP 地址可能會改變。這會導致端口轉發失效。可以寫一個腳本來自動更新這個規則。

排查步驟總結

我建議你按照以下順序進行排查:

  1. 【服務器端 WSL】 確認 SSH 服務狀態并重啟:sudo service ssh restart。這是最快最簡單的嘗試。
  2. 【服務器端 Windows】 檢查并添加防火墻規則,允許 2222 端口入站。
  3. 【客戶端】 在你的電腦上,用 -vvv 選項運行 SSH 命令,獲取更詳細的調試信息:
    ssh -vvv hujh@10.49.71.114 -p 2222
    
    仔細查看輸出,它會告訴你連接斷開前最后發生了什么,這對于定位問題非常有幫助。
  4. 【服務器端 Windows & WSL】 檢查 WSL2 的 IP 地址和 Windows 的端口轉發規則是否正確匹配。如果不確定,刪除舊規則 (netsh interface portproxy delete ...) 并重新添加。
  5. 【服務器端 WSL】 檢查 sshd_config 文件是否有過于嚴格的限制。

通常情況下,問題會出在第1、2、4步中的某一個。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/87541.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/87541.shtml
英文地址,請注明出處:http://en.pswp.cn/web/87541.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

(論文蒸餾)語言模型中的多模態思維鏈推理

(論文總結)語言模型中的多模態思維鏈推理 論文名稱研究背景動機主要貢獻研究細節兩階段框架實驗結果促進收斂性擺脫人工標注錯誤分析與未來前景 論文名稱 Multimodal Chain-of-Thought Reasoning in Language Models http://arxiv.org/abs/2302.00923 …

React Native 接入 eCharts

React Native 圖表接入指南 概述 本文檔詳細介紹了在React Native項目中接入ECharts圖表的完整步驟,包括依賴安裝、組件配置、數據獲取、圖表渲染等各個環節。 目錄 1. 環境準備2. 依賴安裝3. 圖表組件創建4. 數據獲取Hook5. 圖表配置6. 組件集成7. 國際化支持8…

基于C#的OPCServer應用開發,引用WtOPCSvr.dll

操作流程: 1.引入WtOPCSvr.dll文件 2.注冊服務:使用UpdateRegistry方法注冊,注意關閉應用時使用UnregisterServer取消注冊。 3.初始化服務:使用InitWTOPCsvr初始化 4.使用CreateTag方法,創建標簽 5.讀寫參數使用下面三…

Java類加載器getResource行為簡單分析

今天嘗試集成一個第三方SDK,在IDE里運行正常,放到服務器上卻遇到了NPE,反編譯一看,原來在這一行:String path Test.class.getClassLoader().getResource("").getPath(); // Test.class.getClassLoader().ge…

【CodeTop】每日練習 2025.7.4

Leetcode 1143. 最長公共子序列 動態規劃解決,比較當前位置目標和實際字符串的字母,再根據不同情況計算接下來的情形。 class Solution {public int longestCommonSubsequence(String text1, String text2) {char[] t1 text1.toCharArray();char[] t2…

ES6從入門到精通:Promise與異步

Promise 基礎概念Promise 是 JavaScript 中處理異步操作的一種對象,代表一個異步操作的最終完成或失敗及其結果值。它有三種狀態:Pending(進行中)、Fulfilled(已成功)、Rejected(已失敗&#xf…

數據結構:二維數組(2D Arrays)

目錄 什么是二維數組? 二維數組的聲明方式 方式 1:靜態二維數組 方式 2:數組指針數組(數組中存放的是指針) 方式 3:雙指針 二級堆分配 💡 補充建議 如何用“第一性原理”去推導出 C 中…

HAProxy 和 Nginx的區別

HAProxy 和 Nginx 都是優秀的負載均衡工具,但它們在設計目標、適用場景和功能特性上有顯著區別。以下是兩者的詳細對比:1. 核心定位特性HAProxyNginx主要角色專業的負載均衡器/代理Web 服務器 反向代理/負載均衡設計初衷高性能流量分發高并發 HTTP 服務…

基于Java+SpringBoot的健身房管理系統

源碼編號:S586源碼名稱:基于SpringBoot的健身房管理系統用戶類型:多角色,用戶、教練、管理員數據庫表數量:13 張表主要技術:Java、Vue、ElementUl 、SpringBoot、Maven運行環境:Windows/Mac、JD…

【MySQL安裝-yum/手動安裝,卸載,問題排查處理完整文檔(linux)】

一.使用Yum倉庫自動安裝 步驟1:添加MySQL Yum倉庫 sudo rpm -Uvh https://dev.mysql.com/get/mysql80-community-release-el7-6.noarch.rpm步驟2:安裝MySQL服務器 sudo yum install mysql-server -y步驟3:啟動并設置開機自啟 sudo systemctl start mysqld sudo systemct…

自定義線程池-實現任務0丟失的處理策略

設計一個線程池,要求如下:隊列最大容量為10(內存隊列)。當隊列滿了之后,拒絕策略將新的任務寫入數據庫。從隊列中取任務時,若該隊列為空,能夠從數據庫中加載之前被拒絕的任務模擬數據庫 (TaskDa…

【NLP入門系列四】評論文本分類入門案例

🍨 本文為🔗365天深度學習訓練營 中的學習記錄博客🍖 原作者:K同學啊 博主簡介:努力學習的22級本科生一枚 🌟?;探索AI算法,C,go語言的世界;在迷茫中尋找光芒…

Ubuntu安裝ClickHouse

注:本文章的ubuntu的版本為:ubuntu-20.04.6-live-server-amd64。 Ubuntu(在線版) 更新軟件源 sudo apt-get update 安裝apt-transport-https 允許apt工具通過https協議下載軟件包。 sudo apt-get install apt-transport-htt…

C++26 下一代C++標準

C++26 將是繼 C++23 之后的下一個 C++ 標準。這個新標準對 C++ 進行了重大改進,很可能像 C++98、C++11 或 C++20 那樣具有劃時代的意義。 一:C++標準回顧 C++ 已經有 40 多年的歷史了。過去這些年里發生了什么?這里給出一個簡化版的答案,直到即將到來的 C++26。 1. C++9…

【MySQL】十六,MySQL窗口函數

在 MySQL 8.0 及以后版本中,窗口函數(Window Functions)為數據分析和處理提供了強大的工具。窗口函數允許在查詢結果集上執行計算,而不必使用子查詢或連接,這使得某些類型的計算更加高效和簡潔。 語法結構 function_…

微型氣象儀在城市環境的應用

微型氣象儀憑借其體積小、成本低、部署靈活、數據實時性強等特點,在城市環境中得到廣泛應用,能夠為城市規劃、環境管理、公共安全、居民生活等領域提供精細化氣象數據支持。一、核心應用場景1. 城市微氣候監測與優化熱島效應研究場景:在城市不…

【仿muduo庫實現并發服務器】eventloop模塊

仿muduo庫實現并發服務器一.eventloop模塊1.成員變量std::thread::id _thread_id;//線程IDPoller _poll;int _event_fd;std::vector<Function<Function>> _task;TimerWheel _timer_wheel2.EventLoop構造3.針對eventfd的操作4.針對poller的操作5.針對threadID的操作…

Redis 加鎖、解鎖

Redis 加鎖和解鎖的應用 上代碼 應用調用示例 RedisLockEntity lockEntityYlb RedisLockEntity.builder().lockKey(TradeConstants.HP_APP_AMOUNT_LOCK_PREFIX appUser.getAccount()).value(orderId).build();boolean isLockedYlb false;try {if (redisLock.tryLock(lockE…

在 Windows 上為 WSL 增加 root 賬號密碼并通過 Shell 工具連接

1. 為 WSL 設置 root 用戶密碼 在 Windows 上使用 WSL&#xff08;Windows Subsystem for Linux&#xff09;時&#xff0c;默認情況下并沒有啟用 root 賬號的密碼。為了通過 SSH 或其他工具以 root 身份連接到 WSL&#xff0c;我們需要為 root 用戶設置密碼。 設置 root 密碼步…

2730、找到最長的半重復子字符穿

題目&#xff1a; 解答&#xff1a; 窗口為[left&#xff0c;right]&#xff0c;ans為窗口長度&#xff0c;same為子串長度&#xff0c;窗口滿足題設條件&#xff0c;即只含一個連續重復字符&#xff0c;則更新ans&#xff0c;否則從左邊開始一直彈出&#xff0c;直到滿足條件…