如何解决 Ubuntu 16.4 上可能存在接口歧义的 ipv6 ssh

如何解决 Ubuntu 16.4 上可能存在接口歧义的 ipv6 ssh

我新安装了 Ubuntu 16.04。我想通过 IPV6 ssh 进入 MacBook Pro。

我可以从 Ubuntu ping Mac,但它要求我指定 -I。

$ ping6 -c 1 -I enp0s25 fe80::14fc:cec5:c174:d88
PING fe80::14fc:cec5:c174:d88(fe80::14fc:cec5:c174:d88) from fe80::ba94:3d5e:9929:4c6e enp0s25: 56 data bytes
64 bytes from fe80::14fc:cec5:c174:d88: icmp_seq=1 ttl=64 time=0.378 ms

相对

$ ping6 -c 1 fe80::14fc:cec5:c174:d88
connect: Invalid argument

我的 Ubuntu 只有一个适配器和接口。

$ ifconfig
enp0s25   Link encap:Ethernet  HWaddr b8:ae:ed:77:91:fa 
...
lo        Link encap:Local Loopback 
...

我可以从使用 PuTTY (plink) 的 Windows PC 上 ssh 到 Mac。这三台机器 (MacBook、Windows、Ubuntu) 都在同一台网络交换机上。

# bash on Windows
$ ssh test@fe80::14fc:cec5:c174:d88
Last login: Sat Nov 17 13:16:15 2018 from fe80::e119:5811:40e5:becf%en8
jws-mac:~ test$

在 Ubuntu 上,这是我想要使用的命令:

$ ssh -6 test@fe80::14fc:cec5:c174:d88
ssh: connect to host fe80::14fc:cec5:c174:d88 port 22: Invalid argument

看起来它的结果与不使用 -I 开关的 ping 类似。我不想使用 -b 开关,因为最终我想使用带有 IPV6 ssh url 的 git。

请多多指点!

答案1

由于这是一个链路本地 IPv6 地址,当地的接口标识符必须指定偏僻的地址。

$ ifconfig
enp0s25   Link encap:Ethernet  HWaddr b8:ae:ed:77:91:fa
...

$ ssh -6 test@fe80::14fc:cec5:c174:d88%enp0s25

或者

SSH-6用户@远程 IPv6 地址本地接口名称

注意enp0s25取决于机器并由 ifconfig 提供并插入 ssh。

这里是一个 ssh URL 的例子,用于像 git 这样的工具,假设用户git和子路径repos/test.git

ssh://git@[fe80::14fc:cec5:c174:d88%25enp0s25]/repos/test.git

或者

ssh://用户@[远程 IPv6 地址%25*本地接口*]/子路径

请注意,将地址与接口分开的%必须进行 URL 编码为%25。

相关内容