Tamir.SharpSsh Could not load file or assembly 'DiffieHellman

LeBlues picture LeBlues · Aug 19, 2014 · Viewed 9.2k times · Source
private void OVConnection()
{
    try {
        //Create a new JSch instance
        JSch jsch = new JSch();

        this.Dispatcher.BeginInvoke(new Action<Status>(DisplayStatus), Status.Connecting);
        //Create a new SSH session
        string host = "url"; //url
        string user = "***"; //ssh username
        string pass = "*******"; //ssh password
        int sshPort = 22; //ssh port
        int rPort = 3306;
        int lPort = 3306;

        int port = Convert.ToInt32(sshPort);

        session = jsch.getSession(user, host, port);
        session.setHost(host);
        session.setPassword(pass);

        UserInfo ui = new MyUserInfo();
        session.setUserInfo(ui);

        session.connect();

        //Set port forwarding on the opened session
        session.setPortForwardingL(lPort, "localhost", rPort);

        if (session.isConnected()) {
            MyDatabase();
        }
    }
    catch (Exception ex) {
        MessageBox.Show(ex.Message);
        this.Dispatcher.BeginInvoke(new Action<Status>(DisplayStatus), Status.NotConnected);
    }
}

I get:

Session.connect: System.IO.FileNotFoundException: Could not load file or assembly 'DiffieHellman, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null' or one of its dependencies. The system cannot find the file specified.

File name: 'DiffieHellman, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null'
   at Tamir.SharpSsh.jsch.jce.DH.getE()
   at Tamir.SharpSsh.jsch.DHG1.init(Session session, Byte[] V_S, Byte[] V_C, Byte[] I_S, Byte[] I_C)
   at Tamir.SharpSsh.jsch.Session.receive_kexinit(Buffer buf)
   at Tamir.SharpSsh.jsch.Session.connect(Int32 connectTimeout)

=== Pre-bind state information ===

LOG: DisplayName = DiffieHellman, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null
 (Fully-specified)
LOG: Appbase = file:///C:/Development/2013/OV Projects/OmniView Documents Upload/Documents Upload/bin/Debug/
LOG: Initial PrivatePath = NULL
Calling assembly : Tamir.SharpSSH, Version=1.1.1.13, Culture=neutral, PublicKeyToken=null.

===

LOG: This bind starts in default load context.
LOG: Using application configuration file: C:\Development\2013\OV Projects\OmniView Documents Upload\Documents Upload\bin\Debug\Documents Upload.vshost.exe.Config
LOG: Using host configuration file: 
LOG: Using machine configuration file from C:\Windows\Microsoft.NET\Framework\v4.0.30319\config\machine.config.
LOG: Policy not being applied to reference at this time (private, custom, partial, or location-based assembly bind).
LOG: Attempting download of new URL file:///C:/Development/2013/OV Projects/OmniView Documents Upload/Documents Upload/bin/Debug/DiffieHellman.DLL.
LOG: Attempting download of new URL file:///C:/Development/2013/OV Projects/OmniView Documents Upload/Documents Upload/bin/Debug/DiffieHellman/DiffieHellman.DLL.
LOG: Attempting download of new URL file:///C:/Development/2013/OV Projects/OmniView Documents Upload/Documents Upload/bin/Debug/DiffieHellman.EXE.
LOG: Attempting download of new URL file:///C:/Development/2013/OV Projects/OmniView Documents Upload/Documents Upload/bin/Debug/DiffieHellman/DiffieHellman.EXE.

I can not figure out why.

Answer

dunc picture dunc · Nov 24, 2014

I had the same error and was able to resolve it by adding this NuGet package from Mentalis to my project references.

Make sure you have the NuGet package manager installed, first. After installing it, I did this:

Right-click References > Manage nuget packages > search for DiffieHellman > Install

This worked for me.