You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

如何使用本地链路IPv6实现SSH访问?

如何使用本地链路IPv6实现SSH访问?

我完全懂你的困扰——明明本地链路IPv6是永久有效的,用来局域网SSH访问本该比临时公网IPv6更省心,结果却连ping都不通,还改了一堆配置越搞越头大对吧?咱们一步步来排查解决:

第一步:先确认Ubuntu端的基础配置是否正确

首先得确保Ubuntu的本地链路IPv6地址正常,而且SSH服务确实在监听IPv6:

  • 查看网卡的IPv6地址,执行命令:
    ip -6 addr show wlp4s0  # 这里替换成你的实际网卡名,比如wlp4s
    
    找到开头为fe80:的本地链路地址,确认它是基于MAC生成的EUI-64格式(正常情况下应该是这样,你之前设置了addr-gen-mode=eui64)。
  • 检查SSH服务是否监听IPv6端口:
    ss -tulpn | grep ssh
    
    如果输出里看不到:::22或者包含fe80的条目,说明SSH只监听了IPv4。这时候需要编辑/etc/ssh/sshd_config文件:
    • 找到AddressFamily选项,改成AddressFamily any;或者添加ListenAddress ::
    • 保存后重启SSH服务:
      sudo systemctl restart sshd
      

第二步:检查Ubuntu防火墙是否放行IPv6的SSH流量

很多时候连不上都是防火墙挡了,尤其是IPv6的规则容易被忽略:

  • 先查看UFW防火墙状态:
    sudo ufw status
    
    如果看不到ssh (v6)相关的允许规则,执行命令放行:
    sudo ufw allow ssh/ipv6
    sudo ufw reload
    

第三步:修正Windows端的接口指定方式

你之前用的是接口编号%14,有时候编号会变动,试试用接口名称代替更靠谱:

  • 在Windows里,先确认当前Wi-Fi的接口名称(比如“Wi-Fi”),可以通过「设置-网络和Internet-Wi-Fi」查看,或者执行命令:
    netsh interface ipv6 show interfaces
    
  • 然后把SSH命令改成:
    ssh -6 <你的Ubuntu用户名>@<fe80开头的本地链路地址>%Wi-Fi -p <你的SSH端口>
    
    比如:ssh -6 john@fe80::abcd:1234:wxyz:5678%Wi-Fi -p 22

第四步:排查IPv6路由和配置冲突(重点!你之前改了很多隐私配置)

你之前调整了nmcli、sysctl、netplan的多个IPv6设置,很可能导致配置冲突或者路由异常:

  • 先修正sysctl里的accept_ra设置:编辑/etc/sysctl.d/10-ipv6-privacy.conf,把net.ipv6.conf.<你的网卡名>.accept_ra = 0改成1,然后执行:
    sudo sysctl -p /etc/sysctl.d/10-ipv6-privacy.conf
    
    因为本地链路的路由依赖路由器通告,关闭accept_ra会导致路由失效。
  • 统一网络配置管理:你同时改了netplan和NetworkManager的配置,容易冲突。建议把netplan配置文件里对应无线网卡的部分注释掉,然后执行:
    sudo netplan generate && sudo netplan apply
    sudo systemctl restart NetworkManager
    
  • 确认本地链路路由存在:执行ip -6 route,应该能看到类似fe80::/64 dev wlp4s0 proto kernel metric 100的条目,没有的话重启网卡试试:sudo nmcli connection down <你的网络名> && sudo nmcli connection up <你的网络名>

第五步:测试连通性

先从ping开始排查:

  • 在Windows端执行:ping -6 <Ubuntu的fe80地址>%Wi-Fi,如果能通再试SSH;
  • 如果还是不通,在Ubuntu上ping自己的本地链路地址,再ping Windows的本地链路地址(Windows用ipconfig找fe80开头的地址),双向测试定位问题点。

备注:内容来源于stack exchange,提问作者hamagust

火山引擎 最新活动