PSCP не принимает hostkey
Я запускаю PSCP на Windows из сценария. Если я добавлю
echo y | pscp.exe...
Оно работает. Тем не менее, я не могу заставить его принять hostkey с помощью
pscp.exe -hostkey aa:bb:cc...
Я также пытался
pscp.exe -hostkey "ssh-rsa 2048 aa:bb:cc..."
и это тоже не работает. Каждый раз я получаю следующую ошибку:
Fatal: Host key did not appear in manually configured list
Я неправильно понял, как это работает? Это должно быть полностью автоматизировано, я не могу добавить ключ вручную, так как он хранится в контексте реестра пользователей. Этот сценарий необходимо запустить как запланированную задачу с использованием учетной записи службы, возможно, на нескольких компьютерах.
Как правильно использовать -hostkey
?
Во избежание сомнений, да, это правильный алгоритм и длина ключа, и да, я использую фактический отпечаток пальца, а не "aa:bb:cc...", который использовался для примера.
1 ответ
Это правильное использование:
C:\>plink -pw password -hostkey 01:02:03:04:05:06:07:08:09:10:11:12:13:14:15:16 username@hostname
И это работает:
C:\>plink -pw password -hostkey "RSA 2048 01:02:03:04:05:06:07:08:09:10:11:12:13:14:15:16" username@hostname
Но, как сказал @dave_thompson_085... программа, похоже, игнорирует любые дополнительные слова, разделенные пробелами, потому что это также работает:
C:\>plink -pw password -hostkey "ASDF 01:02:03:04:05:06:07:08:09:10:11:12:13:14:15:16 ASDF" username@hostname
Я обнаружил, что ключ должен совпадать с тем, что ожидается в рукопожатии (не указав опцию -Hostkey):
C:\>plink hostname
The server's host key is not cached in the registry. You
have no guarantee that the server is the computer you
think it is.
The server's rsa2 key fingerprint is:
ssh-rsa 2048 01:02:03:04:05:06:07:08:09:10:11:12:13:14:15:16
If you trust this host, enter "y" to add the key to
PuTTY's cache and carry on connecting.
If you want to carry on connecting just once, without
adding the key to the cache, enter "n".
If you do not trust this host, press Return to abandon the
connection.
Store key in cache? (y/n)
Эта команда покажет, какие ключи были сгенерированы на сервере:
$ ls -1 /etc/ssh/ssh_host_*.pub
/etc/ssh/ssh_host_dsa_key.pub
/etc/ssh/ssh_host_key.pub
/etc/ssh/ssh_host_rsa_key.pub
Эти команды будут отображать отпечаток ключа (используя имена файлов, показанные в предыдущей команде выше):
$ ssh-keygen -l -f /etc/ssh/ssh_host_rsa_key
2048 01:02:03:04:05:06:07:08:09:10:11:12:13:14:15:16 /etc/ssh/ssh_host_rsa_key.pub (RSA)
$ ssh-keygen -l -f /etc/ssh/ssh_host_dsa_key
1024 01:02:03:04:05:06:07:08:09:10:11:12:13:14:15:16 /etc/ssh/ssh_host_dsa_key.pub (DSA)