(该问题应标记为“Tailscale”,但目前尚不存在 - 需要了解 Tailscale)
我有一台标准的 Ubuntu 20.04 笔记本电脑,通过 ssh 连接到远程 Raspberry Pi(端口 22)。在远程位置,路由器上有端口转发(59995->22)。
~/.ssh/config
注意:我在测试期间已将其删除。
SSH 始终能够成功连接,使用:
ssh user@public_ip -i ~/.ssh/id_rsa -p 59995
但是,当我使用 Tailscale IP 时,它从未连接,只是挂起 120 秒然后超时:
ssh user@tailscale-ip -i ~/.ssh/id_rsa
(无效)
但是,如果我手动编译 OpenSSH v8.2,并使用该版本,而不是 /usr/bin/ssh 二进制文件,那么它就可以完美运行!即使 /usr/bin/ssh 也是 v8.2
./ssh user@tailscale-ip -i ~/.ssh/id_rsa
(有效!)
总结:系统二进制文件在“普通” ssh 下运行良好,但在 ssh-via-tailscale 下运行不正常。但是,手动编译的(相同) Openssh 版本在常规 ssh 和 ssh-over-tailsale 下运行良好。有人知道是什么原因造成的吗?
补充笔记
我认为尾秤网络没有任何明显问题:即,如果我通过尾秤 IP 探测,则nmap
扫描显示正确的端口已打开,并且我可以netcat
直接访问tailscale_ip:22
,它正在接收和响应。
diff ~/openssh-8.2p1/ssh /usr/bin/ssh
显示二进制文件有所不同。(大小差异也很大,大约 3MB 对 0.7MB)
/usr/bin/ssh -V
:OpenSSH_8.2p1 Ubuntu-4ubuntu0.4,OpenSSL 1.1.1f 2020 年 3 月 31 日
~/openssh-8.2p1/ssh -V
:OpenSSH_8.2p1,OpenSSL 1.1.1f 2020 年 3 月 31 日
日志/usr/bin/ssh -vvv user@tailscale_ip -i ~/.ssh/id_rsa
(IP 删除)
OpenSSH_8.2p1 Ubuntu-4ubuntu0.4, OpenSSL 1.1.1f 31 Mar 2020
debug1: Reading configuration data /etc/ssh/ssh_config
debug1: /etc/ssh/ssh_config line 19: include /etc/ssh/ssh_config.d/*.conf matched no files
debug1: /etc/ssh/ssh_config line 21: Applying options for *
debug2: resolve_canonicalize: hostname 100.1.1.1 is address
debug2: ssh_connect_direct
debug1: Connecting to 100.1.1.1 [100.1.1.1] port 22.
< 2 minute hang here >
ssh: connect to host 100.1.1.1 port 22: Connection timed out
答案1
我遇到了类似的问题,因为我的 ssh 客户端没有显示 Tailscale 的 2FA 消息,默认 ACL 策略ssh/action
设置为"check"
。
尝试检查您的用户/标签的 ACL 设置?ssh 的操作值是什么?如果设置为"check"
- 尝试将其更改为"access"
并尝试通过 ssh 访问您的主机。如果这有效 - 我建议研究如何在 ssh 客户端中添加 2FA,以便它显示模式下所需的 Tailscale 身份验证链接"check"
。
一些帮助我调查和修复类似问题的链接: