Принудите ssh использовать определенный алгоритм идентификации хоста

#ssh #known-hosts

Вопрос:

Я пытаюсь лучше понять, как ssh выполняется аутентификация хоста. Я подключаюсь по ssh с macbook pro (OSX 10.14.6) к нескольким серверам CentOS 8.1. На удаленных серверах CentOS есть несколько файлов /etc/ssh/ , которые используются для аутентификации на основе хоста (например ssh_host_ed25519_key.pub , ssh_host_dsa_key.pub , ssh_host_rsa_key.pub ).

Если я посмотрю на локальный компьютер моего macbook ~/.ssh/known_hosts , я увижу записи ssh-rsa , которые используют соответствующие /etc/ssh/ssh_host_rsa_key.pub . Я также вижу записи, для ecdsa-sha2-nistp256 которых соответствуют /etc/ssh/ssh_host_ecdsa_key.pub .

Вопрос :

  1. Когда я ssh захожу на свой удаленный сервер, есть ли способ заставить меня ssh использовать определенный алгоритм для аутентификации хоста или это то, что мне придется изменить вручную known_hosts ? Например, заставить его использовать ssh_host_ecdsa_key.pub вместо ssh_host_rsa_key.pub .
  2. Как ssh по умолчанию решить, какой алгоритм использовать для аутентификации хоста?

Ответ №1:

Вы можете использовать -o флаг для указания параметров SSH. Один из этих вариантов HostKeyAlgorithms -это то, что будет контролировать, какие алгоритмы предлагает ваш клиент, см.: https://man.openbsd.org/ssh.

Если вы запустите ssh с -vv флагом, вы сможете увидеть предложение, сделанное вашим клиентом. Затем сервер выбирает первый алгоритм, используемый клиентом, который он поддерживает. Я бы предположил, что разные поддерживают разные алгоритмы.