Я могу подключиться к SFTP с помощью FileZilla на машине, на той же машине, когда я пытаюсь подключиться с помощью кода С#, выдает ошибку как
Ошибка сети: время ожидания подключения к «fs2.comparethemarket.com» истекло
Порт SFTP, используемый для подключения; 2222
Код, который я использую
SessionOptions sessionOptions = new SessionOptions();
if (_strftpprotocol= = "SFTP")
{
sessionOptions.Protocol = WinSCP.Protocol.Sftp;
}
else if (_strftpprotocol == "FTP")
{
sessionOptions.Protocol = WinSCP.Protocol.Ftp;
sessionOptions.FtpSecure = FtpSecure.Explicit;
}
sessionOptions.HostName = _strftpURL;
sessionOptions.UserName = _strftpUserName;
sessionOptions.Password = _strftpPassword;
if (_strftpprotocol == "SFTP")
{
if (string.IsNullOrEmpty(_strftpSSHKey))
{
if (string.IsNullOrEmpty(_strftpKeyPath))
{
sessionOptions.GiveUpSecurityAndAcceptAnySshHostKey = true;
}
else
{
privatekeyFilePath = privatekeyFilePath + _strftpKeyPath;
sessionOptions.SshPrivateKeyPath = privatekeyFilePath;
if (!string.IsNullOrEmpty(_strFTPPrivateKeyPassphrase))
{
sessionOptions.PrivateKeyPassphrase = _strFTPPrivateKeyPassphrase;
}
if (!string.IsNullOrEmpty(_strFTPSshHostKeyFingerprint))
{
sessionOptions.SshHostKeyFingerprint = _strFTPSshHostKeyFingerprint;
}
}
}
else
{
if (string.IsNullOrEmpty(_strftpKeyPath))
{
sessionOptions.SshHostKeyFingerprint = _strftpSSHKey;
}
else
{
privatekeyFilePath = privatekeyFilePath + _strftpKeyPath;
sessionOptions.SshPrivateKeyPath = privatekeyFilePath;
if (!string.IsNullOrEmpty(_strFTPPrivateKeyPassphrase))
{
sessionOptions.PrivateKeyPassphrase = _strFTPPrivateKeyPassphrase;
}
if (!string.IsNullOrEmpty(_strFTPSshHostKeyFingerprint))
{
sessionOptions.SshHostKeyFingerprint = _strFTPSshHostKeyFingerprint;
}
}
}
}
Session session = new Session();
session.Open(sessionOptions);
Пожалуйста, направьте меня, что я делаю неправильно
Согласно WinSCP Docs,
Указание Dst Port
, к которому пытается подключиться SFTP-клиент, выполняется путем установки свойства sessionOptions
Port Number
.
Это необходимо только в том случае, если сервер прослушивает порт не по умолчанию (22), что в вашем случае так и есть. (2222).
Итак, чтобы решить вашу проблему с тайм-аутом,
установите Dst Port
с помощью SessionOptions.PortNumber=2222
(или, что еще лучше, сохраните его в файле конфигурации или там, где устанавливаются эти другие переменные (имя хоста, имя пользователя, пароль))