Mysql 需要使用delphi应用程序指导trought SSH隧道

Mysql 需要使用delphi应用程序指导trought SSH隧道,mysql,delphi,ssh,delphi-2010,indy10,Mysql,Delphi,Ssh,Delphi 2010,Indy10,我创建了一个Delphi2010应用程序。该地区的许多公司都在使用它,从受信任的用户到不受信任的用户。应用程序使用MD5加密密码后的MySQL对用户进行身份验证。接下来,应用程序需要通过ftp上传和下载许多文件 事实是:任何网络嗅探器(如Ethereal,也称为WireShark)都可以从我的应用程序的ftp部分获取我的普通用户和密码。加密密码也可以被抓取,任何人都可以使用任何ftp应用程序登录到我的服务器,并做出不愉快的事情 [TindyFTP]用于管理FTP连接本身。这个对象不支持SFTP,

我创建了一个Delphi2010应用程序。该地区的许多公司都在使用它,从受信任的用户到不受信任的用户。应用程序使用MD5加密密码后的MySQL对用户进行身份验证。接下来,应用程序需要通过ftp上传和下载许多文件

事实是:任何网络嗅探器(如Ethereal,也称为WireShark)都可以从我的应用程序的ftp部分获取我的普通用户和密码。加密密码也可以被抓取,任何人都可以使用任何ftp应用程序登录到我的服务器,并做出不愉快的事情

[TindyFTP]用于管理FTP连接本身。这个对象不支持SFTP,我认为这可能是我问题的结束

来自DEVART的[tMyMac]用于管理MYSQL连接

我现在的观点是: 使用SSH隧道控制(ftp和mysql)事务类型的IO处理程序到我的应用程序上是一种很好的方法吗?我现在正在用DEVART做一些测试,它与MyDAC组件和TIndy兼容

我是否只需要连接到SSH隧道,然后用mysql和ftp解决它? 使用SSH隧道时是否还需要加密ftp密码? 对于MySQL部分,当我试图用WireShark截获密码时,密码似乎被加密或混淆了

感谢您从那时起让我知道您的想法,而不改变我99%完成的程序的所有结构:)

谢谢,
Jonathan

首先,您需要确定您应该/可以使用什么协议。FTP不是SFTP,SSH上的FTP也没有什么意义(尽管这是可能的)。让我们回顾一下选项:

  • 使用FTPS(通过SSL的FTP)。要求FTP服务器具有SSL证书,否则为vialbe选项。缺点:不保护MySQL连接
  • 使用FTP over SSH隧道。如果一个人可以使用SFTP,他不明白为什么会这样做。Indy和我们的产品可以通过SSH进行FTP
  • 使用SFTP(SSH文件传输协议)传输文件,并使用SSH端口转发来保护MySQL连接。从技术上讲,可以通过一个已建立的SSH会话同时运行SFTP子系统和端口转发,我们的系统支持这一点。不过,我不知道DevArt的东西,因为他们的SSH/SFTP客户端非常年轻,可能有某些限制 如果您有一个linux服务器(MySQL建议您这样做),那么它有OpenSSH作为SSH服务器,OpenSSH有内置的SFTP服务器。如果您在windows上运行MySQL,您将很难在windows上使用OpenSSH端口,而Bitvise SSH服务器将是一个更好的选择(我们自己在内部服务器上使用它)

    在SFTP的情况下,身份验证和加密是在SSH级别执行的,您不需要 为了进一步保护用于身份验证的密码,SSH已经对其进行了保护。不过,您需要关心的是验证服务器向客户端提供的SSH密钥。您可以通过在客户端模块中存储服务器密钥的副本来实现这一点(请记住,您可能需要不时替换服务器密钥,因此不要在客户端模块中硬编码它)


    如果您决定通过SSH路由使用FTP(尽管我不明白您为什么需要这个),您仍然不需要保护FTP密码,因为您将通过安全SSH隧道运行FTP

    Indy 10中的TIdFTP是否在连接级别(SSL/TLS)和登录凭证级别(SASL)支持加密。

    使用外部应用程序(如plink)(putty系列)如何?要了解delphi是如何实现的,您可以查看HeidiSQL源代码:我的服务器在Linux下运行。。。SSH已经到位,我有一个帐户可以使用它。我将检查是否可以简单地使用SSH和mysql以及ftp来完成所有安全性。。。。或者我可能会实现SFTP而不是FTP,但tIndyFTP 10不支持SFTP,但它支持SSL/TLS加密,就像Remy在另一个答案中所说的那样。感谢大家的快速回答或评论。