现在,我可以~/.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
- 特别是接口的解析可以改进,因为它依赖于我的机器上使用的命名约定。