Замените ключ хоста автоматически в Linux - PullRequest
0 голосов
/ 31 мая 2018

У меня есть скрипт, который подключается к SFTP-серверу со следующим кодом:

use Net::SFTP::Foreign;
my %cfg = (
    user        => "$user", 
    password    => "$password",
    port        => 22,
    more        => [-o => 'StrictHostKeyChecking no']
);
my $sftp = Net::SFTP::Foreign->new("$host",%cfg);

Я использую StrictHostKeyChecking, чтобы убедиться, что скрипт автоматически принимает ключ ssh.Проблема начинается, когда сервер заменяет ключ хоста новым.Я получаю сообщение об ошибке: ПРЕДУПРЕЖДЕНИЕ: УДАЛЕННАЯ ИДЕНТИФИКАЦИЯ ХОСТА ИЗМЕНИЛАСЬ!

Поэтому мне нужно вручную удалить ключ, запустив ssh-keygen -R testserver.com После этого сценарий снова работает нормально,Я пытаюсь найти способ автоматически заменить ключ в случае его изменения.Технически я могу запускать ssh-keygen -R testserver.com каждый раз, когда запускается скрипт, но мне не нравится это решение.Пока что я не могу найти хороший автоматический способ замены ключа.

1 Ответ

0 голосов
/ 31 мая 2018

Добавьте еще одну опцию, которая указывает, что UserKnownHostsFile на / dev / null должна помочь, но не рекомендуется с точки зрения безопасности; -)

use Net::SFTP::Foreign;
my %cfg = (
    user        => "$user", 
    password    => "$password",
    port        => 22,
    more        => [-o => 'StrictHostKeyChecking=no',
                    -o => 'UserKnownHostsFile=/dev/null']
);
my $sftp = Net::SFTP::Foreign->new("$host",%cfg);
...