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.

Foi útil?

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();
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top