Avahi 完整安装与使用教程(Linux 局域网零配置解析)

Avahi 是 Linux 下轻量的mDNS/DNS-SD 零配置网络服务,对应 Windows 的 Bonjour、macOS 的原生零配置解析,安装后无需手动配置,就能实现局域网内主机名.local的自动 IP 解析,替代手动修改/etc/hosts,完美实现类似 Windows 的局域网主机名解析效果,仅需几步即可完成部署和使用

一、Avahi 安装(主流 Linux 发行版全覆盖)

1. Debian/Ubuntu 系列(Ubuntu 20.04/22.04、Deepin、Kali 等)

bash

<?XML:NAMESPACE PREFIX = “[default] http://www.w3.org/2000/svg” NS = “http://www.w3.org/2000/svg” />

运行

# 先更新软件源,再安装核心包+工具包
sudo apt update && sudo apt install avahi-daemon avahi-utils -y
  • avahi-daemon:Avahi 核心服务进程,负责局域网 mDNS 广播和解析
  • avahi-utils:辅助工具包(含avahi-resolve/avahi-browse等实用命令)
2. CentOS/RHEL 系列(CentOS 7/8/9、Rocky Linux、AlmaLinux 等)

CentOS 需先启用EPEL 源(Avahi 包在 EPEL 仓库),再安装:

bash

运行

# 安装EPEL源(已安装则跳过)
sudo yum install epel-release -y
# 安装Avahi核心包+工具包
sudo yum install avahi avahi-tools -y
3. Fedora 系列

bash

运行

sudo dnf install avahi-daemon avahi-utils -y
4. Arch Linux/Manjaro 系列

bash

运行

sudo pacman -S avahi avahi-utils -y

二、Avahi 服务管理(核心步骤,必须确保服务运行)

Avahi 依赖avahi-daemon进程,安装后需启动服务并设置开机自启,所有发行版均使用systemd命令(通用),一步到位:

bash

运行

# 1. 启动Avahi服务
sudo systemctl start avahi-daemon
# 2. 设置开机自启(重启系统后自动运行,避免每次手动启动)
sudo systemctl enable avahi-daemon
# 3. 验证服务状态(关键:显示active(running)即为正常)
sudo systemctl status avahi-daemon
服务状态正常输出示例

plaintext

● avahi-daemon.service - Avahi mDNS/DNS-SD Stack
     Loaded: loaded (/lib/systemd/system/avahi-daemon.service; enabled; vendor preset: enabled)
     Active: active (running) since Wed 2026-02-04 10:00:00 CST; 10s ago
       Docs: man:avahi-daemon(8)
   Main PID: 1234 (avahi-daemon)
      Tasks: 2 (limit: 19000)
     Memory: 1.2M
     CGroup: /system.slice/avahi-daemon.service
             ├─1234 avahi-daemon: running [linux-server.local]
             └─1235 avahi-daemon: chroot helper

从状态中能直接看到本机的解析域名:主机名.local(如上述linux-server.local)。

常见服务问题解决

若执行status显示failed,大概率是端口被占用(mDNS 默认用 UDP 5353),执行以下命令排查并释放端口:

bash

运行

# 查找占用5353端口的进程
sudo lsof -i :5353
# 杀死占用进程(替换PID为实际查到的进程号)
sudo kill -9 PID
# 重新启动Avahi
sudo systemctl restart avahi-daemon

三、防火墙放行(关键!否则局域网设备无法发现)

Avahi 基于UDP 5353 端口进行 mDNS 广播和解析,若 Linux 开启了防火墙(ufw/firewalld),必须放行该端口,否则局域网其他设备无法解析本机主机名.local,本机也无法解析其他设备。

1. Ubuntu/Debian 系列(用 ufw 防火墙)

bash

运行

# 放行UDP 5353端口
sudo ufw allow 5353/udp
# 重新加载防火墙规则
sudo ufw reload
# 验证放行结果
sudo ufw status
2. CentOS/RHEL/Fedora 系列(用 firewalld 防火墙)

bash

运行

# 永久放行UDP 5353端口(--permanent 表示重启防火墙生效)
sudo firewall-cmd --permanent --add-port=5353/udp
# 重新加载防火墙规则
sudo firewall-cmd --reload
# 验证放行结果
sudo firewall-cmd --list-ports

四、Avahi 核心使用方法(解析 / 查询 / 发现)

安装并配置完成后,无需任何额外配置,直接在局域网内使用主机名.local即可实现 IP 解析,支持ping/ssh/curl等所有网络命令,同时提供专属工具实现更灵活的查询。

基础使用:直接解析局域网主机名.local
1. 查看本机解析域名

先通过hostname查看本机主机名,拼接.local即为 Avahi 解析域名:

bash

运行

hostname  # 输出示例:ubuntu-pc → 解析域名为ubuntu-pc.local
2. 局域网内解析 / 访问(核心功能)
  • ping 测试解析(最直接验证):

    在局域网另一台设备(Linux/Windows/macOS)上,直接 ping 本机的主机名.local,会自动解析到对应 IP:

    bash

    运行

    # 示例:ping ubuntu-pc.local,-c 2 表示只发2个包
    ping ubuntu-pc.local -c 2
    

    正常输出(已成功解析 IP):

    plaintext

    PING ubuntu-pc.local (192.168.1.105) 56(84) bytes of data.
    64 bytes from 192.168.1.105 (192.168.1.105): icmp_seq=1 ttl=64 time=0.520 ms
    64 bytes from 192.168.1.105 (192.168.1.105): icmp_seq=2 ttl=64 time=0.480 ms
    
  • ssh 远程连接(实用场景):

    无需记 IP,直接用主机名.local连接局域网内的 Linux 设备:

    bash

    运行

    ssh root@ubuntu-pc.local  # 替换为实际用户名和主机名.local
    
  • Windows/macOS 兼容访问

    • Windows:打开命令提示符 / PowerShell,直接执行ping ubuntu-pc.local -n 2即可解析;
    • macOS:打开终端,用法和 Linux 完全一致。
进阶使用:Avahi 专属工具(精准查询 / 发现)

安装的avahi-utils/avahi-tools包含多个实用命令,可实现反向解析(IP 查主机名)扫描局域网所有 Avahi 设备等功能。

1. avahi-resolve:精准解析(主机名→IP / IP→主机名)
(1)主机名转 IP(替代 ping,仅输出 IP,适合脚本)

bash

运行

# 语法:avahi-resolve -n 主机名.local
avahi-resolve -n ubuntu-pc.local

输出:ubuntu-pc.local 192.168.1.105

(2)IP 转主机名(反向解析,查局域网 IP 对应的设备名)

bash

运行

# 语法:avahi-resolve -a 目标IP
avahi-resolve -a 192.168.1.105

输出:192.168.1.105 ubuntu-pc.local

2. avahi-browse:扫描局域网所有 Avahi 设备

一次性列出局域网内所有开启了 mDNS/Avahi/Bonjour的设备(Linux/Windows 10+/macOS/ 智能家居),包含设备名、IP、服务类型:

bash

运行

# 扫描所有局域网设备(-a 表示所有类型)
avahi-browse -a
3. avahi-discover:图形化扫描(有桌面环境时使用)

若 Linux 安装了图形桌面(如 GNOME/KDE),可直接打开图形化工具,可视化查看局域网设备,操作更直观:

bash

运行

avahi-discover

五、Avahi 常用配置修改(可选,默认无需改)

Avahi 安装后默认配置即可满足 99% 的使用场景,无需修改配置文件;若有特殊需求(如修改主机名、禁用 IPv6、修改广播域),可编辑核心配置文件/etc/avahi/avahi-daemon.conf

1. 编辑配置文件

bash

运行

sudo vim /etc/avahi/avahi-daemon.conf
2. 常用配置项修改(取消注释即可生效)

ini

[server]
host-name=linux-node  # 修改本机Avahi解析的主机名(默认和系统主机名一致)
domain-name=local     # 解析后缀(默认local,不建议改)
use-ipv4=yes          # 启用IPv4(必开,局域网主要用IPv4)
use-ipv6=no           # 禁用IPv6(避免解析干扰,可选)
allow-interfaces=eth0 # 仅在指定网卡广播(如eth0/ens33,默认所有网卡)

[wide-area]
enable-wide-area=no   # 禁用广域网解析,仅局域网生效(推荐)
3. 配置生效

修改配置后,重启 Avahi 服务即可生效:

bash

运行

sudo systemctl restart avahi-daemon

六、Avahi 卸载(如需清理)

若后续无需使用,可一键卸载,清理所有相关包和配置:

Debian/Ubuntu 系列

bash

运行

sudo apt remove avahi-daemon avahi-utils -y && sudo apt autoremove -y
CentOS/RHEL 系列

bash

运行

sudo yum remove avahi avahi-tools -y
Arch Linux/Manjaro 系列

bash

运行

sudo pacman -Rns avahi avahi-utils -y

七、常见问题排查

1. 局域网设备 ping 主机名.local 提示未知的主机
  • 检查本机 Avahi 服务是否正常运行(systemctl status avahi-daemon);
  • 检查防火墙是否放行 UDP 5353 端口(核心原因);
  • 确认两台设备在同一局域网(同一网段,如 192.168.1.x)。
2. 解析成功但延迟高
  • 禁用 IPv6(修改avahi-daemon.confuse-ipv6=no);
  • 关闭其他局域网解析服务(如 Samba 的 nmbd),避免冲突。
3. Windows 设备无法解析主机名.local
  • Windows 10/11 需安装Bonjour 服务(微软商店搜索 Bonjour 或安装 iTunes,自带 Bonjour);
  • 确保 Windows 防火墙未拦截 mDNS 流量(允许 “Bonjour 服务” 的网络访问)。

核心总结

  1. Avahi 核心是安装 + 启动服务 + 放行 5353/UDP 端口,三步即可实现局域网零配置解析;
  2. 所有解析均为主机名.local格式,无需记 IP,跨 Linux/Windows/macOS 兼容;
  3. 轻量无依赖,仅占几百 KB 内存,比 Samba 更适合仅需局域网解析的场景,无多余功能冗余。

windows ssh 密钥连接linux

windows 中打开powershell 运行以下命令

ssh-keygen -t rsa -b 4096 -C your_email@example.com

运行以下命令查看公钥

Get-Content ~/.ssh/id_rsa.pub

登录linux服务器运行以下命令

mkdir -p ~/.ssh

chmod 700 ~/.ssh

echo “粘贴公钥内容” >> ~/.ssh/authorized_keys

chmod 600 ~/.ssh/authorized_keys

在Windows 11上创建或编辑C:\Users\用户名\.ssh\config文件:

    Host mylinux
     HostName linux_host_ip
     User username
     IdentityFile ~/.ssh/id_rsa
     IdentitiesOnly yes

comfyUI

安装步骤:

安装环境:pip install torch torchvision torchaudio --extra-index-url https://download.pytorch.org/whl/cu130

升级下pip:pip install --upgrade pip

安装comfy-cli命令行工具:pip install comfy-clicomfy --here install

image-20260113102640400

安装ComfyUI-Manager:

cd ComfyUI
cd custom_nodes
git clone https://github.com/ltdrdata/ComfyUI-Manager comfyui-manager
cd ComfyUI-Manager
pip install -r requirements.txt

运行comfyui(新建一个终端):

cd ComfyUI
python main.py --listen 0.0.0.0 --port 8188 #自定义端口

或者:comfy launch

查看端口,然后在浏览器启动comfyui:如果google浏览器打开comfyui出现问题可以更换其他浏览器

在下载模型至对应文件夹时,有里需要手动修改文件名

n8n python runner docker compose

services:
   n8n:
     image: n8nio/n8n:latest
     container_name: n8n_v1
     restart: always
     ports:
       – “5678:5678”
     volumes:
       – /home/node/n8n:/home/node/.n8n
       – /home/node/n8ndata:/home/node/n8ndata
     environment:
       – GENERIC_TIMEZONE=Asia/Shanghai
       – TZ=Asia/Shanghai
       – N8N_SECURE_COOKIE=false
       – N8N_BASIC_AUTH_ACTIVE=false
       – N8N_RUNNERS_ENABLED=true
       – N8N_RUNNERS_MODE=external
       – N8N_RUNNERS_AUTH_TOKEN=your_secure_token_123
       – N8N_RUNNERS_TASK_BROKER_HOST=0.0.0.0  # 确保 Broker 监听全网段
       – N8N_RUNNERS_BROKER_LISTEN_ADDRESS=0.0.0.0
       – NODES_EXCLUDE=[]

  n8n-runner:
     image: n8nio/runners:latest
     container_name: n8n-runner
     restart: always
     volumes:
       – /home/node/n8ndata:/home/node/n8ndata
     environment:
       – N8N_RUNNERS_AUTH_TOKEN=your_secure_token_123
       – N8N_RUNNERS_TASK_BROKER_URI=http://n8n_v1:5679 # 这里建议换成容器名测试
       – PY_PACKAGES=pandas,requests,numpy
       – PY_ALLOW_LIST=”*”
       – N8N_BLOCK_ENV_ACCESS_IN_NODE=false
       – TZ=Asia/Shanghai
     depends_on:
       – n8n

发表在 n8n

n8n安装

docker run -d \
–name n8n_v1 \
-p 5678:5678 \
-e GENERIC_TIMEZONE=”Asia/Shanghai” \
-e TZ=”Asia/Shanghai” \
-e N8N_SECURE_COOKIE=false \
-e N8N_BASIC_AUTH_ACTIVE=false \
-v /usr/bin/python3:/usr/bin/python3 \
-e N8N_RUNNERS_MODE=external \
-e N8N_EXTERNAL_PYTHON_PATH=/usr/bin/python3 \
-e N8N_RUNNERS_AUTH_TOKEN=SuperSecret@123 \
-v /home/node/n8n:/home/node/.n8n \
-v /home/node/n8ndata:/home/node/n8ndata \
  n8nio/n8n

trae 在使用远程连接时能否保存凭据,而不是每次都需要输入登录密码?

在使用 Trae(或其底层基于的 VS Code 架构)进行远程连接(通常是通过 SSH)时,完全可以实现免密登录

这并不是通过在软件里“保存密码文本”实现的,而是通过 SSH 密钥对(Key Pairs) 验证。这是目前最安全且通用的做法。

以下是实现步骤:

1. 在本地机器生成密钥对

如果你的电脑(Windows、Mac 或 Linux)还没有 SSH 密钥,打开终端(PowerShell 或 终端),输入:

Bash

ssh-keygen -t rsa -b 4096

一路按回车(Enter)即可。这会在你的用户目录下的 .ssh 文件夹生成 id_rsa(私钥)和 id_rsa.pub(公钥)。

2. 将公钥发送到远程服务器

你需要把本地的公钥内容拷贝到服务器的特定文件中。最简单的方法是:

  • Mac/Linux:

    Bash

    ssh-copy-id 用户名@服务器IP
    
  • Windows (PowerShell):

    PowerShell

    cat ~/.ssh/id_rsa.pub | ssh 用户名@服务器IP "mkdir -p ~/.ssh && cat >> ~/.ssh/authorized_keys"
    

    (执行后需要最后输入一次服务器密码)


3. 配置 Trae 的 SSH Config 文件

为了让 Trae 自动识别连接信息,建议配置 config 文件:

  1. 在 Trae 中点击左下角的 Remote 按钮(或按 F1 搜索 Remote-SSH: Open SSH Configuration File...)。

  2. 选择你的用户配置文件(通常是 C:\Users\你的名字\.ssh\config~/.ssh/config)。

  3. 添加或修改如下内容:

    Plaintext

    Host my_server_alias          # 你自定义的别名,以后连这个就行
        HostName 1.2.3.4          # 服务器实际 IP
        User root                 # 登录用户名
        IdentityFile ~/.ssh/id_rsa # 指向你的私钥路径
    

4. 解决 Windows 特有的“重复弹窗”问题

如果你已经配置了密钥,但 Trae 仍然弹出询问框,通常是因为 Windows 的 SSH Agent 没有启动。

  • 按下 Win + X,选择 终端(管理员)PowerShell(管理员)

  • 运行以下命令:

    PowerShell

    # 设置服务为自动启动
    Set-Service -Name ssh-agent -StartupType Automatic
    # 启动服务
    Start-Service ssh-agent
    # 将你的密钥加入代理
    ssh-add ~/.ssh/id_rsa
    
总结

配置完成后,你在 Trae 的远程资源管理器中点击连接,它会直接通过密钥握手进入系统,不再跳出密码输入框。

需要我帮你检查一下当前 SSH 报错的具体信息,还是指导你如何找到公钥文件?

PHP代码不执行的原因

公众号查询系统,上传excel文件进行批量生成Pdf证书,有一个字段死活是没有办法插入到数据库中,无论如何调试都没有用,其它字段都正常,而且通过命令行,在服务器终端上执行也正常。

费了半天劲,终于发现,在excel文件中将该字段的字体调成了微软雅黑后居然都正常了,这可必须要记录下!!!

发表在 php

phpstorm中git设置代理

根据你描述的问题(在PhpStorm中设置Git远程仓库URL后,Profile日志无相关记录且报错),结合Proxifier的配置场景,问题很可能与Git调用的底层网络程序未被代理覆盖有关。以下是具体分析和解决方案:

⚙️ 核心原因:Git调用的外部程序未加入代理规则

PhpStorm的Git操作会调用Git安装目录下的相关程序(而非仅phpstorm64.exe),若这些程序未被Proxifier代理,则会出现连接失败或日志缺失问题。关键程序包括:

  1. git.exe
    主程序路径通常为 Git安装目录\bin\git.exe(如:C:\Program Files\Git\bin\git.exe110
  2. git-remote-https.exe
    负责HTTPS通信,位于 Git安装目录\mingw64\libexec\git-core\git-remote-https.exe18
  3. curl.exe
    Git可能依赖此工具处理网络请求,位于 Git安装目录\mingw64\bin\curl.exe18
解决方案:在Proxifier中添加以下规则
  1. Git主程序(必需)
    • 规则目标:git.exe
    • 路径示例:C:\Program Files\Git\bin\git.exe
  2. HTTPS通信模块(必需)
    • 规则目标:git-remote-https.exe
    • 路径示例:C:\Program Files\Git\mingw64\libexec\git-core\git-remote-https.exe
  3. Curl工具(可选,排查时建议添加)
    • 规则目标:curl.exe
    • 路径示例:C:\Program Files\Git\mingw64\bin\curl.exe

验证方法:在Proxifier日志中过滤git-remote-https.execurl.exe,观察是否产生代理流量68

⚠️ 其他可能原因及排查
  1. 环境变量未正确配置
    • 确保Git的bingit-core目录已加入系统环境变量PATH(如未添加会导致PhpStorm找不到Git)110
    • 检查方法:命令行执行 git --version 是否能正常返回版本号。
  2. Git配置问题
    • 执行 git config --global http.proxy 确认Git自身未配置代理(与Proxifier冲突)。
    • 若已配置,清除:git config --global --unset http.proxy
  3. 日志级别不足
    • 在PhpStorm的Git设置中启用详细日志:
      Settings > Version Control > Git → 勾选 Show detailed commit dialogLog actions410
  4. 网络权限拦截
    • 以管理员权限运行Proxifier和PhpStorm,避免系统防火墙拦截子进程6
操作步骤总结

步骤
操作内容

1. 定位Git路径
找到Git安装目录下的binmingw64\binmingw64\libexec\git-core1

2. 添加Proxifier规则
git.exegit-remote-https.execurl.exe分别创建代理规则

3. 检查环境变量
确认PATH包含Git相关目录(命令行验证git --version110

4. 启用详细日志
在PhpStorm中开启Git操作日志记录410

终极建议

优先添加git-remote-https.exe的代理规则(它是Git执行HTTPS请求的核心),并确保其路径正确。若仍无日志,尝试临时关闭防火墙并检查Proxifier日志是否有拦截记录68。只要代理覆盖了Git的网络子进程,GitHub的连接问题即可解决。

发表在 git

Jetbrains全家桶激活方法

亲测有效,此处以phpstrom为例,按理其他产品也可以用相同的方式激活。

原理是我们通过代码搜索其他授权服务器进行永久激活。

方式一 通过censys

https://search.censys.io/

用到的代码:

services.http.response.headers.location: account.jetbrains.com/fls-auth

我们将上面这串代码services.http.response.headers.location: account.jetbrains.com/fls-auth复制进censys搜索框中进行搜索,会出现:

可以看到出现了很多对应跳转到 jetbrains 的服务器IP和网址,我们随便点击一个看下状态是不是 302 只有 302 的才能正常使用 。

然后我们复制域名或者IP到jetbrains全家桶进行激活,比如我们使用第一个 49.234.70.205 复制到 License server 。

可以看到已经连接到jetbrains授权服务器成功了,然后我们点击 ACTIVATE 进行启动就可以了。

方式二 通过shodan或fofa

https://fofa.info/

https://www.shodan.io

用到的代码:

Location: https://account.jetbrains.com/fls-auth

和方式一同样我们将代码复制到搜索框进行搜索就可以了。

通过shodan我们可以直接看到 HTTP/1.1 302 不用再每个都要点进去看了,相对来说比方式一方便。

激活使用jetbrains全家桶方式和censys一样,激活之后我们可以看到用的是 天津理工大学 的 jetbrains授权服务器 。

jetbrains激活原理

通过以上方式激活 jetbrains全家桶 主要是用到了爬取网站服务这一类的搜索引擎实现的。通过搜索引擎我们找到全世界的 jetbrains授权服务器进行激活。

注意事项

每个服务器IP承载激活的数量优先, 如果激活时候提示失败,可以多换几个.

本文章仅用于学习研究勿用于非法.

请支持正版

作者:木子欢儿

出处:https://www.cnblogs.com/HGNET/p/18531891

版权:本作品采用「署名-非商业性使用-相同方式共享 4.0 国际」许可协议进行许可。