When trying to copy some large files between two PCs I was annoyed by the slow wifi and did connect both by a direct LAN cable. But since I didn’t want to manually configure IPs I did remember that IPv6 would give each interface an unique link-local address immedeately. So I went on to figure out how to correctly pass this address to ssh/scp.
Let’s assume the link-local address of ‘fe80::f4de:ff1f:fa5e:feee’.
First try: ssh user@fe80::f4de:ff1f:fa5e:feee
This won’t work because these link-local addresses are only unique on a given link. So you need to specify the interface as well.
Second try: ssh user@fe80::f4de:ff1f:fa5e:feee%en0
Of course you have to change the interface identifier acording to your system. On Linux this would most probably be eth0.
This was find for ssh, but for scp I did also need a remote source directory.
Third try: scp -6 user@fe80::f4de:ff1f:fa5e:feee%en0:/some/path/
This won’t work because the colons confuse ssh. You need to be more explicit by using square brackets.
Forth and final try: scp -6 user@[fe80::f4de:ff1f:fa5e:feee%en0]:/some/path/ .
Figuring out why this is no auto-generated link-local address is left as an exercise to the reader (but not relevant for this post).