Запись 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: ecdsa-sha2-nistp256-cert-v01@openssh.com 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 pi@ca51-1.local) Подключаю без проблем. (Я только что заметил, что *.local не в моем known_hosts файл несмотря на это работает.)

Обратите внимание, что у меня есть адрес туннеля: порт в качестве принципала ([tunnel.in.DOMAIN.us]:10030).

Когда я пытаюсь подключиться к серверу через этот туннель, я получаю сообщение об ошибке:

ssh -p 10030 pi@tunnel.in.awosome.us
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: ecdsa-sha2-nistp256-cert-v01@openssh.com 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 Записи без успеха. В идеале я хотел бы иметь запись принципала, которая блокирует хост до полного доменного имени (tunnel.in.DOMAIN) и порт, но я буду в порядке любой порт на этой машине. Я также попробовал там несколько звездочек.

0 ответов

Другие вопросы по тегам