Какой правильный синтаксис для WinSCP Session.ScanFingerprint ()? - PullRequest
0 голосов
/ 12 июня 2018

Мне нужно использовать WinSCP API для программного получения отпечатков пальцев с удаленных протокольных устройств в нашей сети.Прямо сейчас это делается утомительно, открывая сеанс WinSCP с пользовательским интерфейсом Windows и транскрибируя отпечатки пальцев из всплывающего окна, отображаемого, когда он собирается кэшироваться.

Я вижу в документации, где я могу использовать Session.ScanFingerprin t для этого, но, похоже, он возвращает строку ASCII:

ssh-rsa 1040 Rrt2/hXxs+i3Ugz1YeZUXIk/gjliFNyyA9WHBYCu0m8=

вместо ожидаемого шестнадцатеричного значения, которое я ожидал:

ssh-rsa 1040 ef:aa:a1:30:79:12:c7:f8:02:36:d0:ac:71:6b:5b:24

ScanFingerprint требуется параметр algorithm, который я предоставляю в виде строки "SHA-256";Я не смог найти ни одного примера, чтобы сказать, правильно ли это.

Вот код, который я использую:

SessionOptions sessionOptions = new SessionOptions
{
    Protocol = Protocol.Scp,
    HostName = "xxx.xxx.xxx.xxx", // IP address
    UserName = "root",
    Password = "root",

    //SshHostKeyFingerprint = fingerprint
    GiveUpSecurityAndAcceptAnySshHostKey=true
};
sessionOptions.AddRawSettings("AuthGSSAPI", "1");
sessionOptions.AddRawSettings("Cipher", "aes,blowfish,3des,chacha20,WARN,arcfour,des");
sessionOptions.AddRawSettings("KEX", "ecdh,dh-gex-sha1,dh-group14-sha1,dh-group1-sha1,rsa,WARN");
Session session;
using (session = new Session())
{
    //session.DisableVersionCheck = true;
    try
    {
        Log("Opening session");
        string fingerprint = null;
        fingerprint = session.ScanFingerprint(sessionOptions,"SHA-256");
        string t = fingerprint;
    }
    catch (Exception ex)
    {
        Log("WinSCP: " + ex.Message);
        return;
    }
}

Я предоставляю неверный параметр алгоритма или мне нужно переосмыслить полученную строку отпечатка пальца?

1 Ответ

0 голосов
/ 12 июня 2018

Это отпечаток SHA-256 в кодировке Base64, возвращаемый для algorithm = "SHA-256":

ssh-rsa 1040 Rrt2/hXxs+i3Ugz1YeZUXIk/gjliFNyyA9WHBYCu0m8=

Это отпечаток MD5 в шестнадцатеричном формате, возвращаемый для algorithm = "MD5":

ssh-rsa 1040 ef:aa:a1:30:79:12:c7:f8:02:36:d0:ac:71:6b:5b:24

См. документацию для algorithm аргумента Session.ScanFingerprint.

Вы должны использовать SHA-256, если это возможно, поскольку MD5 больше не считается безопасным.

WinSCPпонимает оба (оба можно использовать для SessionOptions.SshHostKeyFingerprint, для -hostkey в скриптах WinSCP или где-либо еще).


Также обратите внимание, что нет необходимости устанавливать UserName, Password,GiveUpSecurityAndAcceptAnySshHostKey, AuthGSSAPI или Cipher для Session.ScanFingerprint вызова.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...