SSH known_hosts 端口号条目和使用 @cert-authority 的隧道

SSH known_hosts 端口号条目和使用 @cert-authority 的隧道

我已经在服务器上设置了 SSH 证书颁发机构,包括带有适用主体的签名主机密钥。我已经设置了本地known_hosts文件以识别证书颁发机构,当我直接通过 SSH 进入主机时,它可以正常工作。但是,我还在主机上设置了反向隧道,以便通过我设置的虚拟机通过 SSH 进入主机。尽管签名的主机密钥中有一个适当的字符串,但我不知道如何让我的 SSH 客户端将其识别为已知主机。如何签署主机密钥或设置 known_hosts 条目,以便在通过第三方建立隧道时识别主机?

以下是我客户的回复known_hosts

@cert-authority *.DOMAIN.us ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDRd5kjlix8PN1SsQ...

这是ssh-keygen -L主机密钥:

pi@ca51-1:~ $ ssh-keygen -L -f /etc/ssh/ssh_host_ecdsa_key-cert.pub 
/etc/ssh/ssh_host_ecdsa_key-cert.pub:
        Type: [email protected] host certificate
        Public key: ECDSA-CERT SHA256:at+6J0W9S0BZj96YeJqtUCAAksUFu8P840ZCkVm9fb0
        Signing CA: RSA SHA256:AYPOCzb67UvUUIoULa3BgstmX1XIDP9+4bClTycMC9g
        Key ID: "ca51-1.in"
        Serial: 9
        Valid: forever
        Principals: 
                ca51-1.local
                ca51-1.in.DOMAIN.us
                [tunnel.in.DOMAIN.us]:10030
        Critical Options: (none)
        Extensions: (none)

当我尝试本地连接到服务器()时,我可以毫无问题地连接。(我刚刚注意到,尽管它可以工作,但它并不在我的文件中。)ssh [email protected]*.localknown_hosts

请注意,我有隧道地址:端口作为主体([tunnel.in.DOMAIN.us]:10030)。

当我尝试通过该隧道 ssh 进入服务器时收到错误:

ssh -p 10030 [email protected]
key_cert_check_authority: invalid certificate
Certificate invalid: name is not a listed principal
The authenticity of host '[tunnel.in.awosome.us]:10030 ([138.68.10.xxx]:10030)' can't be established.
ECDSA key fingerprint is SHA256:at+6J0W9S0BZj96YeJqtUCAAksUFu8P840ZCkVm9fb0.

以下是更多调试信息-v

debug1: expecting SSH2_MSG_KEX_ECDH_REPLY
debug1: Server host certificate: [email protected] SHA256:at+6J0W9S0BZj96YeJqtUCAAksUFu8P840ZCkVm9fb0, serial 9 ID "ca51-1.in" CA ssh-rsa SHA256:AYPOCzb67UvUUIoULa3BgstmX1XIDP9+4bClTycMC9g valid forever
debug1: checking without port identifier
debug1: Host 'tunnel.in.awosome.us' is known and matches the ECDSA-CERT host certificate.
debug1: Found CA key in /Users/jshannon/.ssh/known_hosts:31
key_cert_check_authority: invalid certificate
Certificate invalid: name is not a listed principal

为了确认我没有犯错误,known_hosts我复制了第 31 行的密钥(ssh-rsa ....),将其粘贴到临时文件中,然后运行ssh-keygen -l

ssh-keygen -l -f temp_keys/key.pub 
2048 SHA256:AYPOCzb67UvUUIoULa3BgstmX1XIDP9+4bClTycMC9g AWOS (RSA)

我认为也许主机格式principals不正确,但如果我接受未知主机,我会将其密钥添加到known_hosts

[tunnel.in.DOMAIN.us]:10030,[138.68.10.xxx]:10030 ecdsa-sha2-nistp256 AAAAE2VjZHNhLX

第一个条目与主体中的条目匹配,直到格式和端口号。

我尝试了几次迭代principals条目,但都没有成功。理想情况下,我希望有一个主体条目将主机锁定到 FQDN(tunnel.in.DOMAIN)和端口,但我可以使用该机器上的任何端口。我也尝试了一些星号。

答案1

这个问题问得有点晚了(这个问题问了 5 年之后),但我今天自己也遇到了这个问题,想把这个问题记录下来,供其他遇到这个问题的人参考。答案很简短,但提示却很模糊。关键部分是:

debug1: Found CA key in /Users/jshannon/.ssh/known_hosts:31
key_cert_check_authority: invalid certificate
Certificate invalid: name is not a listed principal

OpenSSH 试图说明的要点是,您用于连接的服务器的名称(即[tunnel.in.DOMAIN.us]:10030)应该在提供的证书中列为主体 - 但事实并非如此。生成包含此主体的证书将解决该问题。

相关内容