好的,我已经与生产计算机上的服务器建立了有效连接。我需要在我的开发计算机上复制它,以便我可以传输我自己的文件。一切都是一样的,直到操作系统。
当我尝试连接时,我得到的只是:
服务器拒绝了我们的密钥。
这是我的日志文件...
. 2013-01-28 15:26:25.738 Session name: hex166t@65.XXX.XX.XXX (Modified stored session)
. 2013-01-28 15:26:25.738 Host name: 65.XXX.XX.XXX (Port: 1XXXX)
. 2013-01-28 15:26:25.738 User name: hex166t (Password: Yes, Key file: Yes)
. 2013-01-28 15:26:25.738 Tunnel: No
. 2013-01-28 15:26:25.738 Transfer Protocol: SFTP
. 2013-01-28 15:26:25.738 Ping type: -, Ping interval: 30 sec; Timeout: 15 sec
. 2013-01-28 15:26:25.738 Proxy: none
. 2013-01-28 15:26:25.738 SSH protocol version: 2; Compression: No
. 2013-01-28 15:26:25.738 Bypass authentication: No
. 2013-01-28 15:26:25.738 Try …我有一个包,它使用 WinSCP 从 FTP 下载文件,当我在本地执行它时,它运行得很好。但是当我们从 SSIS 数据库目录的已部署版本运行时,我们遇到了问题。已为 .dll 文件完成 GAC 注册。
下面是我们得到的错误。

更新

我正在尝试使用以下设置连接到FTP服务器
此设置运行良好,我可以通过GUI连接到FTP服务器(版本5.7.5)
但是,当我尝试将这些设置转换为脚本时
winscp.com /command "option batch abort" "option confirm off" "open ftp://username:password@ftp.example.com:21 -   
explicittls /" "put -filemask=>1D  D:\Backups\*.bak /" "exit"
并运行它cmd,有一个错误消息表明有
命令'open'的参数太多."
我在这里做错了什么以及如何解决它?
我正在尝试SFTP通过SSIS软件包连接到服务器。程序包WinSCP使用.txt文件中的以下连接字符串执行:
open sftp://username:fc$#6444@example.com:22
但是,该软件包一直无法连接而失败。与密码中的特殊字符有关吗?
如果替换字符串,则可以连接到其他SFTP,因此我知道它一定与上面的语法有关。我尝试将双引号放在字符串周围,如下所示,但未成功:
open "sftp://username:fc$#6444@example.com:22"
我可以CMD使用以下代码从Windows中的SFTP下载文件:
WinSCP.com
# Connect to the host and login using password
open user:pw@address
# get all the files in the remote directory and download them to a specific local directory
lcd C:\Users\xx\Desktop
get *.xlsx
# Close and terminate the session
exit
我在线搜索,发现可以将这些代码放在bat文件中并使用
Call Shell("cmd.exe /c C:\Users\xx\Desktop\WinSCPGet.bat", 1)
但是,仅WinSCP.com执行bat文件的第一行。它将弹出cmd窗口,显示此内容,而不执行其他任何操作。

如何一次执行所有行?
谢谢
我在 .bat 中有以下内容(这有效):
"%winscp%" /ini=nul ^
           /log=C:\TEMP\winscplog.txt ^
           /command "open scp://goofy:changeme@10.61.10.225/ -hostkey=""ssh-rsa 2048 d4:1c:1a:4c:c3:60:d5:05:12:02:d2:d8:d6:ae:6c:5d""" ^
           "put ""%outfile%"" /home/public/somedir/somesubdir/%basename%" ^
           "exit"
我试图将其复制到这样的 powershell 脚本中:
& $winscp "/ini=nul" `
           "/log=C:\TEMP\winscplog.txt" `
           "/command" 'open sftp://goofy:changeme@10.61.10.225/ -hostkey="ssh-rsa 2048 d4:1c:1a:4c:c3:60:d5:05:12:02:d2:d8:d6:ae:6c:5d"' `
           "put `"" + $outfile + "`" /home/public/somedir/somesubdir/" + $basename `
           "exit"
当我运行 .bat 脚本时,文件将上传。
当我运行 .ps1 脚本时,我得到 Host key does not match configured key ssh-rsa
我怀疑我没有在 powershell 中正确格式化命令,并且在 winscp 看到它时主机密钥已经损坏。
我检查了日志,显示的只是来自主机的主机密钥。它没有显示我正在使用的密钥。我通过更改我的主机并注意到它没有出现在日志中来确认这一点。我比较了 .bat 和 .ps1 之间的日志,不同之处在于 ps1 以上述错误终止。
winscp 是一个 sftp 实用程序。
当尝试通过 WinSCP 访问 nextcloud 的 WebDav API 时,我面临着正确使用根文件夹、远程路径等的几个问题。为了节省其他人的时间,这里是我想出的将文件上传到的工作代码远程(共享)文件夹。
得到教训:
然而,WinSCP、nextcloud 文档中没有可用的示例,这里也找不到任何内容。
因此,基本上我试图从服务器上的整个文件夹中仅下载一个文件。
文件夹“domain”现在包含这些文件:
文件1.txt
文件2.txt
文件3.txt
因此,正如我在 WinSCP 文档中看到的,如果我只想下载一个文件,我仍然应该使用Session.GetFiles()(方法文档)和文件的完整路径。好吧,但我不明白我的问题是什么,因为它不起作用。
session.GetFiles("/domains/domain/File1.txt", Directory.GetCurrentDirectory());
但是,如果我将远程路径更改为整个目录,而不是单个文件,我需要它效果很好,但我不需要所有三个 .txt 文件。
session.GetFiles("/domains/domain/", Directory.GetCurrentDirectory());
我正在尝试使用 PowerShell 使用 WinSCP 自动传输文件。我已经安装了 .NET 程序集。在我添加的代码中,我为了隐私取出了凭据和主机名,并且我还使用了WinSCPnet.dll. 这是我得到的错误:
错误:提供的值无效,或属性为只读。更改值,然后重试。
我$sessionOptions在第 5 行定义了这个。关于我可以做些什么来运行它的任何想法?
try
{
    Add-Type -Path "WinSCPnet.dll"
    $sessionOptions = New-Object WinSCP.SessionOptions -Property @{
        Protocol = [WinSCP.Protocol]::Sftp
        HostName = "HostName"
        UserName = "UserName"
        Password = "Password"
        SshHostKeyFingerprint = "ssh-rsa 2048 Fingerprint here"
    }
    $session = New-Object WinSCP.Session
    try
    {
        # Connect
        $session.Open($sessionOptions)
        # Upload files
        $transferOptions = New-Object WinSCP.TransferOptions
        $transferOptions.TransferMode = [WinSCP.TransferMode]::Binary
        $transferResult =
            $session.PutFiles("Source", "Destination", $False, $transferOptions)
        # Throw on any error
        $transferResult.Check()
        # Print results …我正在尝试构建一个使用 SFTP 下载一些日志文件并将它们导入数据库的服务。
因为 Delphi 没有自带 SFTP 组件,所以我创建了一个 BAT 文件来使用 WinSCP 下载日志
DownloadLogs.bat:
  WinSCP.com < DownloadLogs.commands
DownloadLogs.commands:
  open sftp://root:password@myserver.com
  option confirm off
  get -delete /var/lib/3cxpbx/Instance1/Data/Logs/CDRLogs files
  exit
这是我的服务:
procedure TsrvCentralita.ServiceExecute(Sender: TService);
const SecondsBetweenExecutions = 10;
var Counter: integer;
    dmLogs: TdmLogs;
begin
  Counter := 0;
  while not Terminated do begin
    Inc(Counter);
    if Counter > SecondsBetweenExecutions then begin
      Counter := 0;
      dmLogs := TdmLogs.Create(Self);
      try
        if dmLogs.DownloadLogs then dmLogs.ImportLogs;
      finally
        dmLogs.Free;
      end;
    end;
    Sleep(1000);
    ServiceThread.ProcessRequests(False);
  end;
end;
这就是我调用 BAT 文件的方式:
function ExecAppWait(AppName: …