sshnet / sshnet/SSH.NET

Renci.SshNet.Sftp iOS iPad - Connection Error

Open
#804 0 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

Dominant language
C#
Stars
4.4k
Forks
993
Avg merge
9d 21h
Merged PRs (30d)
1

Description

I've a problem while connecting with a sftp - Server with my iPad iOS 14.4.1.

I'm using the Renci.SshNet.Sftp Framework. On Mac Osx or Windows everything works perfectly. But on iPad its stops working at "sshClient.Connect();" I put the private key file into the StreamingAssets Folder.

I'm using port 22. The server does not get any connection try.

`public void DownloadDirectory(){
Renci.SshNet.ConnectionInfo conn =
new ConnectionInfo(hostName, port, username, new AuthenticationMethod[]
{

    new PrivateKeyAuthenticationMethod(username, new PrivateKeyFile[]
           { new PrivateKeyFile(Application.streamingAssetsPath + "/privatekeyFile", "") }),
    });
    try
    {
        using (var sshClient = new SftpClient(conn))
        {
            sshClient.Connect();
            var files = sshClient.ListDirectory(directory);
            foreach (var file in files)
            {
                if (!file.Name.StartsWith(".") && file.Name.StartsWith(localFileName))
                {
                    string remoteFileName = file.Name;
                    using (Stream file1 = File.OpenWrite(Application.streamingAssetsPath + localFileName))
                    {
                        Debug.Log(directory + remoteFileName);
                        sshClient.DownloadFile(directory + remoteFileName, file1);
                    }
                }
            }
        }
    }
    catch (Renci.SshNet.Common.SshConnectionException)
    {
        Debug.LogError("Cannot connect to the server.");
    }
    catch (System.Net.Sockets.SocketException)
    {
        Debug.LogError("Unable to establish the socket.");
    }
    catch (Renci.SshNet.Common.SshAuthenticationException)
    {
        Debug.LogError("Authentication of SSH session failed.");
    }
}`

Error Message from Xcode.

` (Filename: ./Runtime/Export/Debug/Debug.bindings.h Line: 35)

NullReferenceException: Object reference not set to an instance of an object.
  at System.Linq.Expressions.Interpreter.LightLambda.MakeRunDelegateCtor (System.Type delegateType) [0x00000] in <00000000000000000000000000000000>:0
  at System.Linq.Expressions.Interpreter.LightLambda.GetRunDelegateCtor (System.Type delegateType) [0x00000] in <00000000000000000000000000000000>:0
  at System.Linq.Expressions.Interpreter.LightLambda.MakeDelegate (System.Type delegateType) [0x00000] in <00000000000000000000000000000000>:0
  at System.Linq.Expressions.Interpreter.LightDelegateCreator.CreateDelegate (System.Runtime.CompilerServices.IStrongBox[] closure) [0x00000] in <00000000000000000000000000000000>:0
  at System.Linq.Expressions.Interpreter.LightDelegateCreator.CreateDelegate () [0x00000] in <00000000000000000000000000000000>:0
  at System.Linq.Expressions.Expression`1[TDelegate].Compile (System.Boolean preferInterpretation) [0x00000] in <00000000000000000000000000000000>:0
  at System.Linq.Expressions.Expression`1[TDelegate].Compile () [0x00000] in <00000000000000000000000000000000>:0
  at System.Runtime.CompilerServices.CallSite`1[T].CreateCustomNoMatchDelegate (System.Reflection.MethodInfo invoke) [0x00000] in <00000000000000000000000000000000>:0
  at System.Runtime.CompilerServices.CallSite`1[T].MakeUpdateDelegate () [0x00000] in <00000000000000000000000000000000>:0
  at System.Runtime.CompilerServices.CallSite`1[T].GetUpdateDelegate (T& addr) [0x00000] in <00000000000000000000000000000000>:0
  at System.Runtime.CompilerServices.CallSite`1[T].GetUpdateDelegate () [0x00000] in <00000000000000000000000000000000>:0
  at System.Runtime.CompilerServices.CallSite`1[T]..ctor (System.Runtime.CompilerServices.CallSiteBinder binder) [0x00000] in <00000000000000000000000000000000>:0
  at System.Runtime.CompilerServices.CallSite`1[T].Create (System.Runtime.CompilerServices.CallSiteBinder binder) [0x00000] in <00000000000000000000000000000000>:0
  at Renci.SshNet.Session.HandleMessageCore (Renci.SshNet.Messages.Message message) [0x00000] in <00000000000000000000000000000000>:0
  at Renci.SshNet.Session.MessageListener () [0x00000] in <00000000000000000000000000000000>:0
  at System.Action.Invoke () [0x00000] in <00000000000000000000000000000000>:0
  at Renci.SshNet.Abstractions.ThreadAbstraction+<>c__DisplayClass1_0.<ExecuteThread>b__0 (System.Object o) [0x00000] in <00000000000000000000000000000000>:0
  at System.Threading.WaitCallback.Invoke (System.Object state) [0x00000] in <00000000000000000000000000000000>:0
  at System.Threading.QueueUserWorkItemCallback.WaitCallback_Context (System.Object state) [0x00000] in <00000000000000000000000000000000>:0
  at System.Threading.ContextCallback.Invoke (System.Object state) [0x00000] in <00000000000000000000000000000000>:0
  at System.Threading.ExecutionContext.RunInternal (System.Threading.ExecutionContext executionContext, System.Threading.ContextCallback callback, System.Object state, System.Boolean preserveSyncCtx) [0x00000] in <00000000000000000000000000000000>:0
  at System.Threading.ExecutionContext.Run (System.Threading.ExecutionContext executionContext, System.Threading.ContextCallback callback, System.Object state, System.Boolean preserveSyncCtx) [0x00000] in <00000000000000000000000000000000>:0
  at System.Threading.QueueUserWorkItemCallback.System.Threading.IThreadPoolWorkItem.ExecuteWorkItem () [0x00000] in <00000000000000000000000000000000>:0
  at System.Threading.ThreadPoolWorkQueue.Dispatch () [0x00000] in <00000000000000000000000000000000>:0
  at System.Threading._ThreadPoolWaitCallback.PerformWaitCallback () [0x00000] in <00000000000000000000000000000000>:0

(Filename: currently not available on il2cpp Line: -1)`

Is Renci.sshnet supporting iOS devices ?
Hope you can help me.

Regards

MotionBrain

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start by reproducing the iOS 14.4.1 Unity/IL2CPP connection failure using the example and inspect Renci.SshNet.Session.HandleMessageCore, where the stack trace enters the library. Compare the iOS behavior with macOS or Windows and establish whether SSH.NET can connect and transfer a file on the target device without the reported exception.

Written by the indexing model from the issue text.

Assessment

Tech stack
csharp, ios, unity
Domain
mobile-dev, networking
Issue type
Bug
Difficulty
4/5
Estimated time
3-5 days
Activity status
Stale
Clarity
Needs clarification
Newbie friendliness
25/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.