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