最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Linux防止SSH暴力破解的多種方法

 更新時間:2026年04月27日 08:40:09   作者:知遠漫談  
SSH(Secure Shell)是 Linux 系統(tǒng)管理員遠程管理服務(wù)器最常用的協(xié)議,它安全、穩(wěn)定、功能強大,但也正因為如此,SSH 服務(wù)往往成為黑客攻擊的首要目標(biāo),尤其是暴力破解,在本文中,我們將深入探討如何從多個維度有效防御 SSH 暴力破解攻擊,需要的朋友可以參考下

引言

SSH(Secure Shell)是 Linux 系統(tǒng)管理員遠程管理服務(wù)器最常用的協(xié)議。它安全、穩(wěn)定、功能強大,但也正因為如此,SSH 服務(wù)往往成為黑客攻擊的首要目標(biāo) —— 尤其是暴力破解(Brute Force Attack)。攻擊者通過自動化腳本不斷嘗試用戶名和密碼組合,試圖獲得系統(tǒng)訪問權(quán)限。一旦成功,后果不堪設(shè)想:數(shù)據(jù)泄露、系統(tǒng)被控、淪為肉雞、甚至被用于發(fā)動進一步攻擊。

在本文中,我們將深入探討如何從多個維度有效防御 SSH 暴力破解攻擊。不僅會介紹傳統(tǒng)配置方法,還會提供 Java 實現(xiàn)的實時監(jiān)控與自動封禁工具,并結(jié)合可視化圖表幫助你理解攻擊模式和防御機制。

什么是 SSH 暴力破解?

SSH 暴力破解是指攻擊者利用自動化程序,反復(fù)嘗試不同的用戶名和密碼組合,以期“撞開”系統(tǒng)的登錄大門。這類攻擊通常具有以下特征:

  • 高頻次連接請求(每秒數(shù)次到數(shù)百次)
  • 使用常見用戶名(如 root, admin, test
  • 使用弱密碼字典(如 123456, password, qwerty
  • 來源 IP 分布廣泛或集中在某些惡意 IP 段
  • 攻擊持續(xù)時間長,可能持續(xù)數(shù)天甚至數(shù)周

小知識:根據(jù) Shodan.io 的統(tǒng)計,全球每天有超過 200 萬次 SSH 登錄嘗試來自惡意掃描器。

SSH 攻擊趨勢分析(mermaid 圖表)

我們先來看一組模擬的 SSH 攻擊頻率隨時間變化圖,這有助于理解為何我們需要主動防御:

從上圖可見,攻擊并非均勻分布,而是集中在工作時間段,且周三出現(xiàn)“持續(xù)攻擊”,說明攻擊者也在“上班”。我們需要的是動態(tài)、智能、多層次的防御策略。

方法一:修改默認 SSH 端口

這是最基礎(chǔ)但非常有效的一步。默認的 SSH 端口是 22,絕大多數(shù)自動化腳本都只會掃這個端口。改個端口,能過濾掉 90% 的低級掃描。

操作步驟:

  1. 編輯 SSH 配置文件:
sudo nano /etc/ssh/sshd_config
  1. 找到 Port 22,修改為其他端口(比如 2222):
Port 2222
  1. 重啟 SSH 服務(wù):
sudo systemctl restart sshd
  1. 別忘了在防火墻放行新端口:
sudo ufw allow 2222/tcp

注意:修改端口前請確保你有其他方式訪問服務(wù)器(如控制臺),避免把自己鎖在外面!

方法二:禁用 root 登錄

root 是 Linux 的超級用戶,也是攻擊者的首要目標(biāo)。禁用其直接登錄可大幅提升安全性。

操作步驟:

編輯 /etc/ssh/sshd_config

PermitRootLogin no

然后重啟 SSH:

sudo systemctl restart sshd

之后,你需要先用普通用戶登錄,再通過 su -sudo 提權(quán)。

方法三:啟用密鑰認證,禁用密碼登錄

密碼容易被暴力破解,而 SSH 密鑰幾乎不可能被暴力攻破(前提是私鑰保管好)。

操作步驟:

  1. 在本地生成密鑰對(如果還沒有):
ssh-keygen -t rsa -b 4096
  1. 將公鑰上傳到服務(wù)器:
ssh-copy-id -p 2222 user@your-server-ip
  1. 修改 /etc/ssh/sshd_config
PasswordAuthentication no
PubkeyAuthentication yes
  1. 重啟 SSH:
sudo systemctl restart sshd

現(xiàn)在只能通過私鑰登錄,暴力破解徹底失效!

方法四:使用 Fail2ban 自動封禁惡意 IP

Fail2ban 是一個入侵防御軟件,它能監(jiān)控日志文件,發(fā)現(xiàn)多次失敗登錄后自動將 IP 加入防火墻黑名單。

安裝與配置:

sudo apt update
sudo apt install fail2ban

復(fù)制默認配置:

sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local

編輯 jail.local,設(shè)置 SSH 監(jiān)控:

[sshd]
enabled = true
port = 2222
filter = sshd
logpath = /var/log/auth.log
maxretry = 3
bantime = 86400
findtime = 600

解釋:

  • maxretry = 3:10分鐘內(nèi)失敗3次就封
  • bantime = 86400:封禁24小時
  • findtime = 600:監(jiān)控最近10分鐘內(nèi)的日志

啟動服務(wù):

sudo systemctl enable fail2ban
sudo systemctl start fail2ban

查看封禁狀態(tài):

sudo fail2ban-client status sshd

方法五:配置防火墻限制訪問來源

如果你的團隊只有固定幾個 IP 需要訪問 SSH,那就只允許這些 IP 連接。

使用 UFW(Ubuntu):

sudo ufw allow from 192.168.1.100 to any port 2222
sudo ufw deny 2222
sudo ufw enable

使用 firewalld(CentOS/RHEL):

sudo firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="192.168.1.100" port protocol="tcp" port="2222" accept'
sudo firewall-cmd --permanent --remove-service=ssh
sudo firewall-cmd --reload

這樣,非白名單 IP 根本連不上 SSH 端口。

方法六:部署自研 Java 監(jiān)控工具(實戰(zhàn)代碼?。?/h2>

雖然 Fail2ban 很強大,但有時我們需要更靈活的控制 —— 比如對接企業(yè)內(nèi)部告警系統(tǒng)、發(fā)送郵件、記錄數(shù)據(jù)庫、或?qū)釉破脚_ API。

下面是一個用 Java 編寫的簡易 SSH 暴力破解監(jiān)控器,它讀取 /var/log/auth.log,檢測失敗登錄,自動調(diào)用 iptables 封禁 IP。

項目結(jié)構(gòu)簡潔,適合二次開發(fā)集成到現(xiàn)有運維平臺。

項目依賴(Maven)

<dependencies>
    <dependency>
        <groupId>ch.qos.logback</groupId>
        <artifactId>logback-classic</artifactId>
        <version>1.4.11</version>
    </dependency>
    <dependency>
        <groupId>org.apache.commons</groupId>
        <artifactId>commons-lang3</artifactId>
        <version>3.13.0</version>
    </dependency>
</dependencies>

核心代碼:SSHMonitor.java

import org.apache.commons.lang3.StringUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileReader;
import java.io.IOException;
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
import java.util.*;
import java.util.concurrent.Executors;
import java.util.concurrent.ScheduledExecutorService;
import java.util.concurrent.TimeUnit;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class SSHMonitor {
    private static final Logger logger = LoggerFactory.getLogger(SSHMonitor.class);
    // 日志文件路徑(Ubuntu/Debian)
    private static final String AUTH_LOG_PATH = "/var/log/auth.log";
    // 匹配失敗登錄的正則表達式
    private static final String FAILED_LOGIN_PATTERN =
            ".*Failed password for (?:invalid user )?(\\S+) from (\\d+\\.\\d+\\.\\d+\\.\\d+).*";
    // 白名單IP(不封禁)
    private static final Set<String> WHITE_LIST = Set.of(
            "127.0.0.1",
            "192.168.1.1", // 示例,替換成你的管理IP
            "10.0.0.1"
    );
    // 失敗次數(shù)閾值
    private static final int MAX_RETRY = 5;
    // 封禁時長(秒)
    private static final int BAN_DURATION = 3600; // 1小時
    // 存儲IP失敗次數(shù)
    private final Map<String, Integer> failedAttempts = new HashMap<>();
    // 存儲已封禁IP及解封時間
    private final Map<String, LocalDateTime> bannedIPs = new HashMap<>();
    public void startMonitoring() {
        ScheduledExecutorService scheduler = Executors.newScheduledThreadPool(1);
        // 每10秒掃描一次日志
        scheduler.scheduleAtFixedRate(this::scanAuthLog, 0, 10, TimeUnit.SECONDS);
        // 每分鐘清理過期封禁
        scheduler.scheduleAtFixedRate(this::unbanExpiredIPs, 0, 1, TimeUnit.MINUTES);
        logger.info("SSH 暴力破解監(jiān)控器已啟動...");
    }
    private void scanAuthLog() {
        File logFile = new File(AUTH_LOG_PATH);
        if (!logFile.exists()) {
            logger.warn("日志文件不存在: {}", AUTH_LOG_PATH);
            return;
        }
        try (BufferedReader reader = new BufferedReader(new FileReader(logFile))) {
            String line;
            Pattern pattern = Pattern.compile(FAILED_LOGIN_PATTERN);
            while ((line = reader.readLine()) != null) {
                Matcher matcher = pattern.matcher(line);
                if (matcher.matches()) {
                    String user = matcher.group(1);
                    String ip = matcher.group(2);
                    if (WHITE_LIST.contains(ip)) {
                        continue; // 白名單跳過
                    }
                    failedAttempts.merge(ip, 1, Integer::sum);
                    int attempts = failedAttempts.get(ip);
                    logger.warn("檢測到失敗登錄: 用戶={} IP={} 嘗試次數(shù)={}", user, ip, attempts);
                    if (attempts >= MAX_RETRY && !bannedIPs.containsKey(ip)) {
                        banIP(ip);
                    }
                }
            }
        } catch (IOException e) {
            logger.error("讀取日志文件失敗", e);
        }
    }
    private void banIP(String ip) {
        try {
            // 調(diào)用 iptables 封禁
            String cmd = String.format("iptables -A INPUT -s %s -j DROP", ip);
            Process process = Runtime.getRuntime().exec(cmd);
            process.waitFor();
            LocalDateTime unbanTime = LocalDateTime.now().plusSeconds(BAN_DURATION);
            bannedIPs.put(ip, unbanTime);
            logger.info("? 已封禁 IP: {},解封時間: {}", ip, unbanTime.format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")));
            // 可選:發(fā)送郵件/企業(yè)微信/釘釘通知
            // sendAlert("SSH暴力破解警報", "IP " + ip + " 因多次失敗登錄已被封禁");
        } catch (Exception e) {
            logger.error("封禁IP失敗: {}", ip, e);
        }
    }
    private void unbanExpiredIPs() {
        LocalDateTime now = LocalDateTime.now();
        List<String> toUnban = new ArrayList<>();
        for (Map.Entry<String, LocalDateTime> entry : bannedIPs.entrySet()) {
            if (now.isAfter(entry.getValue())) {
                toUnban.add(entry.getKey());
            }
        }
        for (String ip : toUnban) {
            try {
                String cmd = String.format("iptables -D INPUT -s %s -j DROP", ip);
                Process process = Runtime.getRuntime().exec(cmd);
                process.waitFor();
                bannedIPs.remove(ip);
                failedAttempts.remove(ip); // 清除計數(shù)
                logger.info("? 已解封 IP: {}", ip);
            } catch (Exception e) {
                logger.error("解封IP失敗: {}", ip, e);
            }
        }
    }
    // 可擴展:發(fā)送告警通知
    private void sendAlert(String title, String content) {
        // 此處可集成郵件、Slack、企業(yè)微信、釘釘?shù)?
        // 示例略...
    }
    public static void main(String[] args) {
        new SSHMonitor().startMonitoring();
    }
}

如何運行?

  1. 編譯打包成 JAR:
mvn clean package
  1. 后臺運行(需 root 權(quán)限,因為要執(zhí)行 iptables):
sudo java -jar ssh-monitor.jar
  1. 查看日志:
tail -f logs/app.log

可擴展功能建議:

  • 對接 Redis 存儲狀態(tài),支持多節(jié)點部署
  • 記錄攻擊日志到 MySQL/Elasticsearch
  • 調(diào)用云廠商 API(如阿里云、AWS)添加安全組規(guī)則
  • 發(fā)送 Telegram/Slack/DingTalk 告警
  • 支持 GeoIP 定位攻擊者地理位置

攻擊者地理分布模擬(mermaid 圖表)

了解攻擊來源有助于制定更有針對性的防御策略。以下是模擬的攻擊 IP 地理分布:

渲染錯誤: Mermaid 渲染失敗: Parsing failed: Lexer error on line 3, column 5: unexpected character: ->“<- at offset: 34, skipped 4 characters. Lexer error on line 3, column 10: unexpected character: ->:<- at offset: 39, skipped 1 characters. Lexer error on line 4, column 5: unexpected character: ->“<- at offset: 48, skipped 4 characters. Lexer error on line 4, column 10: unexpected character: ->:<- at offset: 53, skipped 1 characters. Lexer error on line 5, column 5: unexpected character: ->“<- at offset: 62, skipped 5 characters. Lexer error on line 5, column 11: unexpected character: ->:<- at offset: 68, skipped 1 characters. Lexer error on line 6, column 5: unexpected character: ->“<- at offset: 77, skipped 4 characters. Lexer error on line 6, column 10: unexpected character: ->:<- at offset: 82, skipped 1 characters. Lexer error on line 7, column 5: unexpected character: ->“<- at offset: 91, skipped 4 characters. Lexer error on line 7, column 10: unexpected character: ->:<- at offset: 96, skipped 1 characters. Lexer error on line 8, column 5: unexpected character: ->“<- at offset: 104, skipped 4 characters. Lexer error on line 8, column 10: unexpected character: ->:<- at offset: 109, skipped 1 characters. Parse error on line 3, column 12: Expecting token of type 'EOF' but found `35`. Parse error on line 4, column 12: Expecting token of type 'EOF' but found `25`. Parse error on line 5, column 13: Expecting token of type 'EOF' but found `15`. Parse error on line 6, column 12: Expecting token of type 'EOF' but found `10`. Parse error on line 7, column 12: Expecting token of type 'EOF' but found `8`. Parse error on line 8, column 12: Expecting token of type 'EOF' but found `7`.

可見,攻擊來源分布廣泛,無法單純靠地域屏蔽。但可以結(jié)合威脅情報(如 AbuseIPDB)動態(tài)更新黑名單。

方法七:使用云端威脅情報服務(wù)

一些第三方服務(wù)提供全球惡意 IP 數(shù)據(jù)庫,我們可以定期拉取并更新本地防火墻規(guī)則。

推薦兩個免費 API:

AbuseIPDB
Emerging Threats

示例:定時拉取 AbuseIPDB 黑名單

#!/bin/bash
# download-blacklist.sh
API_KEY="your_api_key_here"
BLACKLIST_URL="https://api.abuseipdb.com/api/v2/blacklist?confidenceMinimum=90"
curl -G $BLACKLIST_URL \
  -H "Key: $API_KEY" \
  -H "Accept: application/json" \
  --data-urlencode "confidenceMinimum=90" \
  | jq -r '.data[].ipAddress' > /tmp/abuseip_blacklist.txt
while read ip; do
    iptables -A INPUT -s $ip -j DROP
done < /tmp/abuseip_blacklist.txt
logger "已從 AbuseIPDB 更新 $(wc -l < /tmp/abuseip_blacklist.txt) 個惡意IP"

添加到 crontab,每天凌晨更新:

0 2 * * * /path/to/download-blacklist.sh

方法八:雙因素認證(2FA)

即使密碼或密鑰泄露,2FA 也能提供最后一道防線。推薦使用 Google Authenticator。

Ubuntu 安裝步驟:

sudo apt install libpam-google-authenticator

運行初始化:

google-authenticator

按提示操作,保存?zhèn)溆么a,掃描二維碼綁定手機 App。

編輯 PAM 配置:

sudo nano /etc/pam.d/sshd

添加:

auth required pam_google_authenticator.so

編輯 SSH 配置:

sudo nano /etc/ssh/sshd_config

確保:

ChallengeResponseAuthentication yes
AuthenticationMethods publickey,keyboard-interactive

重啟 SSH:

sudo systemctl restart sshd

下次登錄時,除了密鑰,還需輸入手機上的 6 位驗證碼。

方法九:定期審計與日志分析

再好的防御也需要定期檢查。建議每周審查 SSH 登錄日志:

# 查看最近成功登錄
last

# 查看失敗登錄
grep "Failed password" /var/log/auth.log | tail -20

# 統(tǒng)計攻擊最頻繁的IP
grep "Failed password" /var/log/auth.log | awk '{print $11}' | sort | uniq -c | sort -nr | head -10

也可以用 GoAccess、ELK、Graylog 等工具做可視化分析。

方法十:使用端口敲門(Port Knocking)

這是一種“隱寫術(shù)”式的安全機制:SSH 端口默認關(guān)閉,只有按特定順序“敲擊”幾個端口后,才臨時開放 SSH。

安裝 knockd:

sudo apt install knockd

配置 /etc/knockd.conf

[options]
    UseSyslog

[openSSH]
    sequence    = 7000,8000,9000
    seq_timeout = 10
    command     = /sbin/iptables -A INPUT -s %IP% -p tcp --dport 2222 -j ACCEPT
    tcpflags    = syn

[closeSSH]
    sequence    = 9000,8000,7000
    seq_timeout = 10
    command     = /sbin/iptables -D INPUT -s %IP% -p tcp --dport 2222 -j ACCEPT
    tcpflags    = syn

啟動服務(wù):

sudo systemctl start knockd
sudo systemctl enable knockd

客戶端敲門:

knock your-server-ip 7000 8000 9000
ssh -p 2222 user@your-server-ip

完成操作后,再敲反向序列關(guān)閉端口:

knock your-server-ip 9000 8000 7000

隱蔽性極強,但操作略繁瑣,適合高安全場景。

測試你的防御是否生效

部署完上述措施后,務(wù)必進行測試:

  1. 端口掃描測試
nmap -p 22,2222 your-server-ip

應(yīng)只看到 2222 開放(或完全無響應(yīng))。

  1. 暴力破解模擬(僅限自己服務(wù)器?。?/li>
hydra -l root -P /path/to/passwords.txt ssh://your-server-ip:2222 -t 4

觀察是否被 Fail2ban 或 Java 工具封禁。

  1. 登錄測試

確保你仍能通過密鑰 + 2FA 正常登錄。

總結(jié):構(gòu)建縱深防御體系

沒有單一方案能 100% 防御 SSH 暴力破解。最佳實踐是分層防御

每一層都是保險絲,即使某一層被繞過,下一層仍能阻止入侵。

結(jié)語

SSH 是我們管理 Linux 服務(wù)器的生命線,保護它就是保護我們的數(shù)字資產(chǎn)。通過本文介紹的十種方法 —— 從簡單改端口,到編寫 Java 自動防御程序 —— 你可以根據(jù)自身需求構(gòu)建一套堅固、靈活、智能的防御體系。

記?。喊踩皇且淮涡匀蝿?wù),而是持續(xù)的過程。定期更新、審計、演練,才能在真正的攻擊來臨時從容應(yīng)對。

保持警惕,安全無憂。

如果你覺得本文有幫助,歡迎分享給你的運維小伙伴!一起提升 Linux 服務(wù)器的安全水位!

本文所有代碼示例均可在標(biāo)準 Linux + Java 11+ 環(huán)境下運行。生產(chǎn)環(huán)境使用前請充分測試并做好備份。

以上就是Linux防止SSH暴力破解的多種方法的詳細內(nèi)容,更多關(guān)于Linux防止SSH暴力破解的資料請關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • 解決Linux中修改/etc/profile文件寫錯環(huán)境變量路徑導(dǎo)致系統(tǒng)命令找不到問題

    解決Linux中修改/etc/profile文件寫錯環(huán)境變量路徑導(dǎo)致系統(tǒng)命令找不到問題

    這篇文章主要介紹了解決Linux中修改/etc/profile文件寫錯環(huán)境變量路徑導(dǎo)致系統(tǒng)命令找不到問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-04-04
  • Apache環(huán)境下配置多個ssl證書搭建多個站點的方法

    Apache環(huán)境下配置多個ssl證書搭建多個站點的方法

    這篇文章主要介紹了Apache環(huán)境下配置多個ssl證書搭建多個站點的方法,本文圖文并茂給大家介紹的非常詳細,具有一定的參考借鑒價值,需要的朋友可以參考下
    2018-07-07
  • Linux自帶的logrotate管理日志用法

    Linux自帶的logrotate管理日志用法

    Linux系統(tǒng)中,logrotate工具用于管理和輪轉(zhuǎn)日志文件,防止系統(tǒng)因日志文件過大導(dǎo)致磁盤爆滿,通過配置/etc/logrotate.conf和/etc/logrotate.d/下的文件,用戶可以定義日志處理規(guī)則,如壓縮、備份
    2024-10-10
  • Linux編輯啟動、停止與重啟springboot jar包腳本實例

    Linux編輯啟動、停止與重啟springboot jar包腳本實例

    這篇文章主要給大家介紹了關(guān)于Linux編輯啟動、停止與重啟springboot jar包腳本的相關(guān)資料,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-03-03
  • Linux中的awk命令全解析

    Linux中的awk命令全解析

    這篇文章主要介紹了Linux中的awk命令全解析,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-02-02
  • Linux使用NetworkManager隨機生成你的MAC地址

    Linux使用NetworkManager隨機生成你的MAC地址

    今天小編就為大家分享一篇關(guān)于使用NetworkManager隨機生成你的MAC地址的文章,小編覺得內(nèi)容挺不錯的,現(xiàn)在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧
    2018-09-09
  • linux服務(wù)器顯卡崩潰解決方案

    linux服務(wù)器顯卡崩潰解決方案

    這篇文章主要介紹了linux服務(wù)器顯卡崩潰解決方案,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2020-07-07
  • Linux系統(tǒng)配置NAT網(wǎng)絡(luò)模式的詳細步驟(附圖文)

    Linux系統(tǒng)配置NAT網(wǎng)絡(luò)模式的詳細步驟(附圖文)

    本文詳細指導(dǎo)如何在VMware環(huán)境下配置NAT網(wǎng)絡(luò)模式,包括設(shè)置主機和虛擬機的IP地址、網(wǎng)關(guān),以及針對Linux和Windows系統(tǒng)的具體步驟,特別提到阿里DNS服務(wù)的使用和Linux系統(tǒng)中網(wǎng)卡文件的編輯,需要的朋友可以參考下
    2025-04-04
  • linux Bash腳本判別使用者的身份方法示例

    linux Bash腳本判別使用者的身份方法示例

    這篇文章主要介紹了linux Bash腳本判別使用者的身份方法示例,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2019-01-01
  • Linux中netstat命令的使用及排查端口號的占用情況說明

    Linux中netstat命令的使用及排查端口號的占用情況說明

    本文介紹了Netstat命令的使用方法,包括顯示網(wǎng)絡(luò)連接、端口監(jiān)聽狀態(tài)、進程信息等,通過Netstat可以方便地排查端口占用情況,查看網(wǎng)絡(luò)連接狀態(tài),以及獲取進程信息等
    2026-03-03

最新評論

老河口市| 临安市| 淮阳县| 阿克| 志丹县| 澎湖县| 黑龙江省| 靖西县| 工布江达县| 霸州市| 望谟县| 英吉沙县| 万宁市| 贵州省| 崇仁县| 昭通市| 隆尧县| 马山县| 永春县| 建水县| 灵山县| 昌平区| 东阳市| 明水县| 图们市| 合川市| 尼木县| 织金县| 曲松县| 安塞县| 米易县| 安宁市| 重庆市| 汶川县| 澄迈县| 福州市| 梨树县| 洮南市| 南阳市| 金秀| 黄石市|