![在 SSH 配置中将多个接口添加到一个 IPv6 主机名](https://linux22.com/image/223294/%E5%9C%A8%20SSH%20%E9%85%8D%E7%BD%AE%E4%B8%AD%E5%B0%86%E5%A4%9A%E4%B8%AA%E6%8E%A5%E5%8F%A3%E6%B7%BB%E5%8A%A0%E5%88%B0%E4%B8%80%E4%B8%AA%20IPv6%20%E4%B8%BB%E6%9C%BA%E5%90%8D%20.png)
现在,我可以~/.ssh/config
通过本地链路 IPv6 访问嵌入式设备:
Host someDevice
# Hostname fe80::dcad:beff:feef:cafe%%eth0
Hostname fe80::dcad:beff:feef:cafe%%enxf875a44106f9
User root
[some more options...]
我不希望每次网络接口发生变化时都进行手动交互。
- 两者都被注释后,SSH 将仅使用第一个。
- 为每个主机使用不同的主机是不切实际的。
有人已经自动化了吗?
现在,我正在研究match
并/etc/hosts
归档以实现这一目标。我更喜欢配置发生在 SSH 配置文件中。
答案1
如果嵌入式设备支持mDns,这是最简单的方法。
如果必须是 IPv6:这可以工作,但并不完美。
# If eth0 is UP, use eth0:
Match originalhost exec "[ $(ip a | awk '/state UP/ {print $2}' | grep eth) == 'eth0:' ]"
Hostname fe80:::dcad:beff:feef:cafe%%eth0
# Default is enxf875
Host someDevice
Hostname fe80::dcad:beff:feef:cafe%%enxf875a44106f9
User root
- 如何为此使用匹配:https://unix.stackexchange.com/a/175395/572363
- 如何获取当前界面:https://unix.stackexchange.com/a/347049/572363
- 特别是接口的解析可以改进,因为它依赖于我的机器上使用的命名约定。