Não é possível obter SharpSSH para conectar via FTP
Pergunta
Estou tendo problemas para fazer uma conexão FTP seguro usando SharpSSH. Até agora eu estive usando a linha de aplicativo de comando do DOS MOVEit Freely para fazer a conexão, e ele se conecta muito bem:
C:\> ftps -user:ABC -password:123 xxx.xxx.xxx.mil
No entanto, quando eu tento fazer a mesma coisa com SharpSSH, eu recebo um erro que diz que a conexão expirou ou o servidor não respondeu corretamente:
Dim sftp = New Tamir.SharpSsh.Sftp("xxx.xxx.xxx.mil", "ABC", "123")
sftp.Connect()
ou
Dim host = New Tamir.SharpSsh.SshStream("xxx.xxx.xxx.mil", "ABC", "123")
Qualquer idéia do que eu poderia estar fazendo errado, ou como eu poderia descobrir o que está a falhar?
Note que eu preciso de uma conexão FTP seguro, então as classes .NET não são uma opção. Eu estou disposto a tentar alternativas para SharpSSH se existirem embora.
Solução
você estiver usando Tamir.SharpSsh, que é uma biblioteca SSH. No entanto, parece que você está se conectando FTPS (ou FTP / SSL) servidor. O FTPS é completamente protocolo diferente e não tem nada comum com SFTP nem SSH.
A seguir página em nosso site discute as diferenças entre FTP, FTP / SSL, FTPS e protocolos de SFTP: rebex.net/secure-ftp.net/.
Breve resumo a seguir:
-
plain FTP, velho, protocolo de transferência de arquivos inseguros. Transferências texto claro senha através da rede.
-
FTPS - FTP sobre TLS / SSL criptografado canal. FTP e FTPS relação é similar ao HTTP e HTTPS.
-
FTP / SSL - o mesmo que FTPS
-
SFTP - SSH File Transfer Protocol. Tem comum nada com FTP (esperar que o nome). Corre sobre SSH criptografado canal de comunicação.
-
Secure FTP - poderia ser tanto SFTP ou FTPS: - (
Você pode tentar componente Rebex File Transfer Pacote , que suporta tanto SFTP e protocolos FTPS (mas custa algum dinheiro ao contrário do SharpSSH).
A ligação ao servidor FTP / SSL ficaria assim:
' Create an instance of the Ftp class.
Dim ftp As New Ftp()
' Connect securely using explicit SSL.
' Use the third argument to specify additional SSL parameters.
ftp.Connect(hostname, 21, Nothing, FtpSecurity.Explicit)
' Connection is protected now, we can log in safely.
ftp.Login(username, password)
Outras dicas
Outra ótima alternativa (também não é livre) é edtFTPnet / PRO , um estábulo, maduro biblioteca que oferece suporte completo para FTPS (e SFTP) em .NET.
Aqui está um código de exemplo para conexão:
SecureFTPConnection ftpConnection = new SecureFTPConnection();
// setting server address and credentials
ftpConnection.ServerAddress = "xxx.xxx.xxx.mil";
ftpConnection.UserName = "ABC";
ftpConnection.Password = "123";
// select explicit FTPS
ftpConnection.Protocol = FileTransferProtocol.FTPSExplicit;
// switch off server validation (only do this when testing)
ftpConnection.ServerValidation = SecureFTPServerValidationType.None;
// connect to server
ftpConnection.Connect();