SSH / SFTP connection issue using Tamir.SharpSsh

Posted by jinsungy on Stack Overflow See other posts from Stack Overflow or by jinsungy
Published on 2009-10-16T17:23:54Z Indexed on 2010/06/02 1:03 UTC
Read the original article Hit count: 1660

Filed under:
|
|
|

This is my code to connect and send a file to a remote SFTP server.

public static void SendDocument(string fileName, string host, string remoteFile, string user, string password)
        {            
            Scp scp = new Scp();

            scp.OnConnecting += new FileTansferEvent(scp_OnConnecting);
            scp.OnStart += new FileTansferEvent(scp_OnProgress);
            scp.OnEnd += new FileTansferEvent(scp_OnEnd);
            scp.OnProgress += new FileTansferEvent(scp_OnProgress);

            try
            {
                scp.To(fileName, host, remoteFile, user, password);
            }
            catch (Exception e)
            {
                throw e;
            }
        }

I can successfully connect, send and receive files using CoreFTP. Thus, the issue is not with the server. When I run the above code, the process seems to stop at the scp.To method. It just hangs indefinitely.

Anyone know what might my problem be? Maybe it has something to do with adding the key to the a SSH Cache? If so, how would I go about this?

EDIT: I inspected the packets using wireshark and discovered that my computer is not executing the Diffie-Hellman Key Exchange Init. This must be the issue.

EDIT: I ended up using the following code. Note, the StrictHostKeyChecking was turned off to make things easier.

            JSch jsch = new JSch();
            jsch.setKnownHosts(host);

            Session session = jsch.getSession(user, host, 22);
            session.setPassword(password);

            System.Collections.Hashtable hashConfig = new System.Collections.Hashtable();
            hashConfig.Add("StrictHostKeyChecking", "no");
            session.setConfig(hashConfig);

            try
            {
                session.connect();

                Channel channel = session.openChannel("sftp");
                channel.connect();
                ChannelSftp c = (ChannelSftp)channel;

                c.put(fileName, remoteFile);

                c.exit();            
            }
            catch (Exception e)
            {
                throw e;
            }

Thanks.

© Stack Overflow or respective owner

Related posts about c#

Related posts about ssh