Назад | Перейти на главную страницу

Запись 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 через этот туннель, я получаю сообщение об ошибке:

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) и порт, но я буду в порядке с любым портом на этой машине. Я тоже пробовал там звездочки.