You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何让SSH使用非临时IPv6地址建立出站连接

如何让SSH使用非临时IPv6地址建立出站连接

嘿,这个需求太接地气了!带可路由IP的IPv6接口默认会生成临时地址用来出站,确实能提升隐私,但有时候我们就是需要固定用非临时的全局IPv6地址来连SSH,总不能每次都先手动查IP再用-b选项吧?下面给你几个实用的解决办法:

1. 动态获取非临时IP并直接连接

不用手动查IP,直接在SSH命令里嵌入获取地址的逻辑就行。假设你的出站网卡是eth0,执行这条命令:

ssh -b "$(ip -6 addr show dev eth0 scope global | grep -v 'temporary' | awk '/inet6/ {print $2}' | cut -d'/' -f1)" user@你的远程主机地址

简单拆解下逻辑:

  • ip -6 addr show dev eth0 scope global:列出eth0网卡上所有全局可路由的IPv6地址
  • grep -v 'temporary':过滤掉带“temporary”标记的临时地址
  • awk和cut:提取纯IPv6地址(去掉后面的前缀长度,比如/64)

如果你的网卡不是eth0,换成wlan0之类的实际名称就行。

2. 封装成别名,一键调用

觉得上面的命令太长?可以把它做成Shell别名,下次直接用。打开你的Shell配置文件(比如~/.bashrc或~/.zshrc),添加一行:

alias ssh-fixed6='ssh -b "$(ip -6 addr show dev eth0 scope global | grep -v "temporary" | awk "/inet6/ {print \$2}" | cut -d"/" -f1)"'

保存后执行source ~/.bashrc(对应你的配置文件),之后只要输入ssh-fixed6 user@远程主机,就会自动用非临时IPv6地址连接了。

3. 针对特定主机配置SSH规则

如果经常连某台特定服务器,可以在SSH配置文件里预设绑定规则。打开~/.ssh/config(没有就新建一个),添加类似这样的内容:

Host myserver
    HostName myserver.example.com
    User myusername
    BindAddress 2001:db8:xxxx:xxxx::xxxx

这里的BindAddress填你网卡的非临时IPv6地址就行。如果怕IP变动,也可以尝试用命令替换(注意部分SSH版本可能不支持,测试下再用):

Host myserver
    HostName myserver.example.com
    User myusername
    BindAddress $(ip -6 addr show dev eth0 scope global | grep -v 'temporary' | awk '/inet6/ {print $2}' | cut -d'/' -f1)

额外小技巧:怎么确认非临时IPv6地址?

执行ip -6 addr命令,找带scope global且没有tmpaddr或temporary标记的地址,比如:

inet6 2001:db8:1234::5678/64 scope global noprefixroute

而临时地址会是这样的:

inet6 2001:db8:1234::abcd/64 scope global temporary dynamic

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.20 08:13:12