如何在X++;(或C#)要安全地从其他服务器发送文件,是否使用端口转发?

如何在X++;(或C#)要安全地从其他服务器发送文件,是否使用端口转发?,c#,sftp,x++,transfer,ssh-tunnel,C#,Sftp,X++,Transfer,Ssh Tunnel,我想使用C#程序中的Renci.SshNet将csv文件从文件服务器(FL)发送到目标服务器(DEST)。 程序在应用服务器(AP)上启动。 FL和DEST允许与防火墙通信,但AP和DEST服务器不允许直接与防火墙通信 你能给我一个简单的X++或C#示例源代码吗 最重要的是,FL服务器和DEST服务器之间的通信是加密的 我在下面补充了我的问题 目前允许AP和DEST与防火墙连接。由于AP和FL位于同一网段中,FL的文件夹可以直接作为网络文件夹引用。 将来,AP和DEST将被防火墙拒绝连接,FL

我想使用C#程序中的Renci.SshNet将csv文件从文件服务器(FL)发送到目标服务器(DEST)。
程序在应用服务器(AP)上启动。
FL和DEST允许与防火墙通信,但AP和DEST服务器不允许直接与防火墙通信

你能给我一个简单的X++或C#示例源代码吗

最重要的是,FL服务器和DEST服务器之间的通信是加密的

我在下面补充了我的问题

目前允许AP和DEST与防火墙连接。由于AP和FL位于同一网段中,FL的文件夹可以直接作为网络文件夹引用。 将来,AP和DEST将被防火墙拒绝连接,FL和DEST将被允许连接。FL文件夹可以作为网络文件夹直接从AP引用的情况保持不变

如果您能给我一些建议,告诉我如何重写程序源代码,以便在Internet连接范围加密的情况下建立安全连接,我将不胜感激

今天,我将向您展示我们系统上X++程序源代码的简化版本

Public static void transferFile(str fileName) { Microsoft.Dynamics.IntegrationFramework.Adapter.FileSystem fileSystem; Renci.SshNet.SftpClient sftpClient; System.IO.FileStream fileStream; FilePath filePath; FilePath filePathProcessed; FTPHostName hostNameAddress; FTPLoginUser loginUser; FTPLoginPwd loginPwd; int portSFTP = 22; hostNameAddress = "sftp.samplecompany.com" loginUser = "SFTPUSER" loginPwd = "PASSWORD" filePath = "\\FL\CSVfolder\" fileSystem = AifUtil::getClrObject(#FileSystemProgId); fileSystem = new Microsoft.Dynamics.IntegrationFramework.Adapter.FileSystem(); fullFileName = filePath + fileName; sftpClient = new Renci.SshNet.SftpClient(hostNameAddress, portSFTP, loginUser, loginPwd); ttsBegin; sftpClient.Connect (); fileStream = new System.IO.FileStream(fullFileName, System.IO.FileMode ::Open); sftpClient.UploadFile(fileStream, fileName); fileStream.Dispose(); sftpClient.Dispose(); ttsCommit; } 公共静态无效传输文件(str文件名){ Microsoft.Dynamics.IntegrationFramework.Adapter.FileSystem文件系统; Renci.SshNet.SftpClient SftpClient; System.IO.FileStream FileStream; 文件路径文件路径; 文件路径文件路径已处理; FTPHostName主机名地址; FTPLoginUser登录用户; FTPLoginPwd loginPwd; int-portSFTP=22; hostNameAddress=“sftp.samplecompany.com” loginUser=“SFTPUSER” loginPwd=“密码” filePath=“\\FL\CSVfolder\” fileSystem=AifUtil::getClrObject(#FileSystemProgId); fileSystem=新的Microsoft.Dynamics.IntegrationFramework.Adapter.fileSystem(); fullFileName=文件路径+文件名; sftpClient=new Renci.SshNet.sftpClient(主机名地址、端口SFTP、登录用户、loginPwd); ttsBegin; Connect(); fileStream=new System.IO.fileStream(fullFileName,System.IO.FileMode::Open); 上传文件(文件流,文件名); Dispose(); sftpClient.Dispose(); TTS委员会; }
端口转发确实是一种选择。但它不允许您将文件从FL传输到DEST。您必须将文件从FL下载到应用程序。然后使用端口将其从应用程序转发到DEST,并通过FL转发post



如果您想要直接传输,您所能做的就是通过SSH shell会话从APP到FL运行命令行SFTP客户端,从FL传输到DEST。

端口转发确实是一种选择。但它不允许您将文件从FL传输到DEST。您必须将文件从FL下载到应用程序。然后使用端口将其从应用程序转发到DEST,并通过FL转发post



如果您想要直接传输,您所能做的就是通过SSH shell会话运行一个命令行SFTP客户端,从APP到FL,从FL传输到DEST。

说实话,我想要更多的X++示例源代码,而不是C语言。然而,由于据说C#类似于X++,所以C#也很受欢迎。说实话,我想要的X++示例源代码比C#语言更多。然而,由于据说C#与X++相似,所以C#也很受欢迎。亲爱的Martin谢谢你的回答。因此,这将是有益的。您认为可以使用多跳将文件直接从FL传输到DEST吗?你能看看下面的网站吗。Multi-hop SSH tunnel“您认为可以使用Multi-hop将文件直接从FL传输到DEST吗?”——我不明白您的意思。我已经回答了上面的问题。亲爱的马丁先生,很抱歉问了两次同样的问题。我补充了我的问题。我不太明白为什么我需要下载,因为从AP到FL的文件夹可以作为网络文件夹引用。如果您可以使用网络路径引用FL上的文件,则不必对从FL到APP的下载进行编码。但从技术上讲,该文件将被下载(文件内容必须从FL获取到应用程序才能上传到DEST,但在您的情况下,这是透明的)。亲爱的Martin感谢您的回答。因此,这将是有益的。您认为可以使用多跳将文件直接从FL传输到DEST吗?你能看看下面的网站吗。Multi-hop SSH tunnel“您认为可以使用Multi-hop将文件直接从FL传输到DEST吗?”——我不明白您的意思。我已经回答了上面的问题。亲爱的马丁先生,很抱歉问了两次同样的问题。我补充了我的问题。我不太明白为什么我需要下载,因为从AP到FL的文件夹可以作为网络文件夹引用。如果您可以使用网络路径引用FL上的文件,则不必对从FL到APP的下载进行编码。但从技术上讲,该文件将被下载(文件内容必须从FL获取到应用程序,然后上传到DEST,但在您的情况下,这是透明的)。