Отпечатки пальцев с использованием SharpSSH при подключении к SFTP-серверу

Я использую Tamir.SharpSSH делать SFTP связи в моем .NET код. У меня есть хост сервера, порт, имя пользователя, пароль и отпечаток сервера.

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

Следующее мое C# код для подключения:

string _ftpURL = "ftp.com"; //Host URL or address of the SFTP server
string _UserName = "Login_Id";      //User Name of the SFTP server
string _Password = "12345";   //Password of the SFTP server
int _Port = 22;                  //Port No of the SFTP server (if any)
string _ftpDirectory = "ReceivedFiles"; //The directory in SFTP server where the files will be uploaded
string LocalDirectory = "D:\\FilePuller"; //Local directory from where the files will be uploaded

ArrayList UploadedFiles = new ArrayList();

Sftp oSftp = new Sftp(_ftpURL, _UserName, _Password);

oSftp.Connect(_Port);

Могу ли я в любом случае добавить проверку на отпечаток сервера перед подключением к SFTP Сервер?

1 ответ

Решение

SharpSSH достаточно глуп, чтобы не проверять ключи хоста по умолчанию.

Вы должны были бы повторно реализовать SshBase.ConnectSession не устанавливать StrictHostKeyChecking в no,

  • А потом использовать JSch.getHostKeyRepository().add() настроить ожидаемый ключ хоста (или реализовать HostKeyRepository интерфейс).
  • Или реализовать UserInfo интерфейс, особенно promptYesNo метод.
Другие вопросы по тегам