Каков правильный синтаксис для WinSCP Session.ScanFingerprint()?
Мне нужно использовать WinSCP API для программного получения отпечатков пальцев с удаленных протокольных устройств в нашей сети. Прямо сейчас это делается утомительно, открывая сеанс WinSCP с пользовательским интерфейсом Windows и транскрибируя отпечатки пальцев из всплывающего окна, отображаемого, когда он собирается кэшироваться.
Я вижу в документации, где я могу использовать Session.ScanFingerprin
т для этого, но, похоже, возвращает строку 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 ответ
Это отпечаток 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
вызов.