通过 SSH 连接到 CNAME 的 tor 隐藏服务

通过 SSH 连接到 CNAME 的 tor 隐藏服务

TLDR:我可以通过 SSH 连接洋葱地址,但不能通过 CNAME 连接该地址的主机名。

我有作为 Tor 服务运行的 SSH 服务器,但我不想记住洋葱地址。我知道我可以将名称添加到我的 SSH 客户端配置中,但这样做的目的是在我借用别人的电脑时能够访问我的电脑,显然我不想过多地干扰其他人的设置。(是的,这些其他电脑实际上可能已经安装了 Tor。)所以我设置了一个主机名,其中的 CNAME 记录指向洋葱地址。如果我这样做torify ssh myaddress.onion,它可以正常工作,但torify ssh mydomain.com结果是:

1565911820 ERROR torsocks[31652]: Unable to resolve. Status reply: 4 (in socks5_recv_resolve_reply() at socks5.c:683)
ssh: Could not resolve hostname mydomain.com: Non-recoverable failure in name resolution

(不,我并没有真正输入mydomain.com;错误已被编辑。)

执行后dig -t CNAME mydomain.com会返回洋葱地址。到目前为止,我的所有测试都在主机本身(LUbuntu 18.04.3)上进行。

答案1

这是因为您没有理解 DNS 的工作原理,而且.onion在公共 DNS 中这不是一个有效的 TLD。让我给您上一堂 CNAME 解析速成课,并为您提供一个解决方案,让您尝试在您这边对此进行“别名化”。

DNS CNAME 解析

DNS CNAME 记录称为别名它们充当一个指针,表示“这个域名是另一个域名的别名,解析该域名并转到该目的地。”

如果我有一个域名example1.com,其 A 记录为 1.2.3.4,即我的实际服务器,并example2.com设置为 CNAME example1.com,那么当我转到example2.comDNS 时,将看到example2.comA 记录解析的 DNS 记录取决于记录example1.com。这在普通 DNS 中有效,因为它是公开寻址的,并且可以查找。

CNAME 目标实际上并未与正在进行的 DNS 查找的 DNS 查找结果“共享”,仅关心生成的 A/AAAA 记录,并且由于不可能存在这样的记录,因此.onion无法正确进行 DNS 查找,并失败。解释如下。

洋葱决议为何失败

CNAME 记录不是与 Tor ONION 地址相同。当您.onion在标准 DNS 中查找针对地址的 CNAME 记录时,它会硬失败。这是因为在公共 DNS 中,.onion无法寻址并且不是有效的 TLD。

CNAME 记录也不要以“重定向”格式“解析”到别名地址(如您所想) - CNAME 只会正确解决如果 CNAME 指针的目标实际上可以返回公共 DNS 记录。因为它.onion永远不会返回公共 DNS 记录,所以它在查找中要么出现 NXDOMAIN,要么出现 SERVFAIL。

这就是您收到错误的原因。

那么我怎样才能让它工作呢?

通过“作弊”并稍微配置您的 SSH 配置。

尝试将此部分添加到您的~/.ssh/config文件中(如果不存在则创建该文件):

Host mydomain.com
    Hostname myaddress.onion

然后尝试再次通过 SSH 连接到mydomain.com。它应该将其重新指向您.onion在幕后的地址。

然而,不要依靠 DNS 将域指向.onion地址 - 它们在域的公共 DNS 中不起作用。

答案2

普通的 DNS 号。如何保存在 txt 记录中并像这样包装呼叫

torify ssh $(dig +short example.com -t txt)

相关内容