This is an interesting question. I have gone in and labbed it up and it seems that I get the same results as you. However, if I attempt to issue the
telnet command with the link local address of the other router, and I don’t include the exit interface, it works:
% IPv6 routing table gigabitethernet2 does not exist
Trying FE80::2 ... Open
Password required, but none set
[Connection to fe80::2 closed by foreign host]
I have verified that this link local address is indeed on the far end of the GigabitEthernet2 connection and is not a local interface.
It seems that unlike PING, the TELNET protocol requires that the exit interface specified when using the link local scope ID must be in the routing table. But what happens if you have the same link local address to two different routers? I tried labbing that up to and I find that I still get the same error that the interface is not in the IPv6 routing table. But I also find that I am unable to connect via telnet using the link local address, even though I’ve configured both routers to accept telnet requests:
R2#telnet fe80::1 !where fe80::1 is the link local address of
Trying FE80::1 ... ! both R1 and R3 connected to R2
% Connection refused by remote host
% IPv6 routing table gigabitethernet0/1 does not exist
My conclusion is that the telnet protocol, at least in the IOS versions we are using, requires the exit interface to be included in the routing table. (It doesn’t make sense since we’re talking about link local addresses, but there you go.) Using the link local address directly seems to get a response, but doesn’t actually work.
I suggest that you always use the global unicast address for telnet since you want to be able to access the devices from anywhere in the network.
Sorry I couldn’t have been more helpful!