连接到 SFTP 服务器时使用 SharpSSH 验证指纹

Veryfing fingerprints using SharpSSH while connecting to SFTP Server

我正在使用 Tamir.SharpSSH 在我的 .NET 代码中建立 SFTP 连接。我有服务器的主机、端口、用户名、密码和服务器的指纹。

我可以在没有指纹的情况下连接到服务器。在建立连接之前,有什么方法可以将我拥有的指纹与服务器的指纹相匹配吗?

以下是我的 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 服务器之前,我是否可以添加对服务器指纹的检查?

SharpSSH 愚蠢到默认不验证主机密钥。

您必须重新实现 SshBase.ConnectSession 而不是将 StrictHostKeyChecking 设置为 no

  • 然后使用JSch.getHostKeyRepository().add()配置预期的主机密钥(或实现HostKeyRepository接口)。
  • 或者实现 UserInfo 接口,特别是 promptYesNo 方法。