为什么我可以通过 ssh 连接到该主机,却无法通过 scp 将文件发送到该主机?

为什么我可以通过 ssh 连接到该主机,却无法通过 scp 将文件发送到该主机?

我在远程主机上配置了 sshd /etc/ssh/sshd_config.d/custom.conf

AddressFamily inet6
PermitRootLogin yes
PubkeyAuthentication no
Match Address fe80::d075:6982:4410:e071

这是我主机的 Ubuntu LTS 上全新安装的 openssh-server,我没有更改/etc/ssh/sshd_config.ip l在我的远程主机上返回:

1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN mode DEFAULT group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
2: eno1: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc fq_codel state DOWN mode DEFAULT group default qlen 1000
    link/ether 18:60:24:be:5c:f6 brd ff:ff:ff:ff:ff:ff
    altname enp2s0
3: wlo1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP mode DORMANT group default qlen 1000
    link/ether e4:42:a6:15:fa:63 brd ff:ff:ff:ff:ff:ff
    altname wlp3s0

但是当我使用主机的无线接口作为可选参数时,%我无法通过 ssh 连接到它,以下命令:

ssh -6 root@fe80::cc08:9465:8dba:15a9%wlo1
ssh -6 root@fe80::cc08:9465:8dba:15a9%wlp3s0

分别返回这些错误:

ssh: Could not resolve hostname fe80::cc08:9465:8dba:15a9%wlo1: Name or service not known
ssh: Could not resolve hostname fe80::cc08:9465:8dba:15a9%wlp3s0: Name or service not known

在本地主机上指定无线接口时,我可以 ssh 到主机,ssh -6 root@fe80::cc08:9465:8dba:15a9%wlp4s0但无法 scp 文件, scp -6 ~/.ssh/id_rsa.pub root@fe80::cc08:9465:8dba:15a9%wlp4s0:~返回

ssh: Could not resolve hostname fe80: Temporary failure in name resolution
lost connection

我尝试将地址与界面一起包装起来,就像scp -6 ~/.ssh/id_rsa.pub root@[fe80::cc08:9465:8dba:15a9%wlp4s0]:~用大括号括起来一样,但没有成功。 fe80::cc08:9465:8dba:15a9%wlp4s0可以通过 到达ping。两台主机都位于同一个无线 LAN 上,并使用 Ubuntu LTS Desktops 22.04 作为操作系统。我已经在远程主机上打开了端口 22 -ufw status在远程主机上返回

Status: active

To                         Action      From
--                         ------      ----
22/tcp                     ALLOW       fe80::d075:6982:4410:e071 

这里发生了什么?

  1. 为什么我不能 ssh 指定目标的接口而不是我自己的接口?

  2. 我可以从本地主机 ssh 到远程主机,为什么我不能 scp 文件到远程主机中?

  3. 我在哪里可以阅读有关用于选择性指定接口的符号的更多信息(Chat GPT3.5 建议使用它,因为我无法仅使用裸 IP 进行连接)? Ctrl-F%打开https://man.openbsd.org/OpenBSD-current/man1/ssh.1,或 onman ssh不返回任何内容。

答案1

为什么我不能 ssh 指定目标的接口而不是我自己的接口?

对于世界上的每台设备,链路本地地址都位于完全相同的 CIDR 范围内。

需要指定接口的原因是操作系统需要知道将请求路由到哪里。通常,IP 地址的 CIDR 范围会通过路由表告诉操作系统要使用哪个接口,但由于链路本地地址都在同一范围内,因此这是行不通的,您需要明确告诉操作系统哪个接口发送请求。

相关内容