首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >现在有什么方法可以与delphi连接SFTP (SSH FTP)吗?

现在有什么方法可以与delphi连接SFTP (SSH FTP)吗?
EN

Stack Overflow用户
提问于 2020-06-04 14:17:36
回答 2查看 1.6K关注 0票数 1

几天来,我一直在寻找一种与Delphi建立SFTP连接的方法。我知道以前它是不可能自由的(SecureBlackBox等),例如Indy不能支持SFTP,但它是旧消息。现在有可能吗?我需要使用SFTP读取一个文件。提前谢谢你!

编辑:

如果有人需要,我可以使用SecureBridge和下面的代码来做我想做的事情:

代码语言:javascript
运行
复制
procedure TForm4.ScSSHClientServerKeyValidate(Sender: TObject; NewServerKey: TScKey; var Accept: Boolean);
begin
  Accept := True;
end;

procedure TForm4.SFTPConnection(Sender: TObject);
var
  ScSSHClient: TScSSHClient;
  ScFileStorage: TScFileStorage;
  ScSFTPClient: TScSFTPClient;
begin
  ScFileStorage := TScFileStorage.Create(nil);
  ScSSHClient := TScSSHClient.Create(nil);
  ScSSHClient.KeyStorage := ScFileStorage;
  ScSSHClient.OnServerKeyValidate := ScSSHClientServerKeyValidate;
  ScSSHClient.HostName := ServeurEditText.Text;
  ScSSHClient.User := UtilisateurEditText.Text;
  ScSSHClient.Password := PasswordEditText.Text;
  try
    begin
      ScSSHClient.Connect;
      ScSFTPClient := TScSFTPClient.Create(nil);
      ScSFTPClient.SSHClient := ScSSHClient;
      ScSFTPClient.Initialize;
      ScSFTPClient.DownloadFile('/etc/asterisk/sip_additional.conf','..\Debug\sip_additional.conf',True);
      ScSFTPClient.DownloadFile('/etc/asterisk/extensions_additional.conf','..\Debug\extensions_additional.conf',True);
      ScSSHClient.Disconnect;
      ShowMessage('Connexion effectuée !');
      Form4.Close;
    end;
  except
    Raise Exception.Create('La connexion a echouée...');
  end;
end;

编辑:

通过使用libssh2.dll,我可以自由地做我想做的事情,这要感谢@Rik。如果有人需要的话,下面的代码:

代码语言:javascript
运行
复制
procedure TChercherAppelsFrame.RecuperationFichiersConfSFTPConnexion();
var
  Mode: TAuthModes;
  FS: TFileStream;
  FS2: TFileStream;
begin
  try
    begin
      SFTP := TSFTPClient.Create(Self);
      SFTP.UserName := 'user';
      SFTP.Password := 'password';
      SFTP.Host := 'host';
      SFTP.Port := StrToIntDef('22', 22);
      SFTP.IPVersion := IPv4;
      Mode := [];
      Mode := Mode + [amPassword];
      SFTP.AuthModes := Mode;
      SFTP.Connect;

      FS := TFileStream.Create(ExtractFilePath(Application.ExeName) + ConstNomFichierContenantRepondeurs, fmCreate);
      SFTP.Get(ConstCheminFichierRepondeurs,FS, True);
      FS2 := TFileStream.Create(ExtractFilePath(Application.ExeName) + ConstNomFichierContenantPostesEtNoms, fmCreate);
      SFTP.Get(ConstCheminFichierPostesPrenoms,FS2, True);

      FS.Free;
      FS2.Free;

      SFTP.Disconnect;
    end;
  except
     Raise Exception.Create('La connexion avec le serveur SFTP a echouée...');
  end;
EN

Stack Overflow用户

发布于 2020-09-17 07:54:30

tgputtylib提供了可用于连接sftp连接的免费dll。使用tgputtylib文件和另一个dll创建了一个示例项目,它可以从任何版本的delphi项目中调用。检查一下这个存储库,看看这是否对你有帮助。

参考资料:https://github.com/superflexible/TGPuttyLib

票数 1
EN
查看全部 2 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62196935

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档