Steve
Steve

Reputation: 433

Pair to mac error Failed to execute 'grep "ssh-rsa ...."

I am trying to pair my Macbook with Visual Studio 2022 but after entering the credentials I received the following error in the gui dialog: "An error occurred while trying to establish an SSH connection with SSH keys to '192.168.178.27:22'"

When checking the logs there is the following error:

Xamarin.Messaging.Ssh.SshCommandRunner Warning: 0 : Failed to execute 'grep "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDRpqma2f+6ghu6P2/Jxx2Aj6+4kY/1tFpkvM1CdlscbvESZFsYakl90P9YvXQhHTXhK6QUHgj4E9s+Ze4PxmXSfYd7b3imWpbSOIqWrlC4rfMn31F3EyJ60Cpc9DO15MtiVS9ctTWBKXzRU8NbUlek8LppEID5Xv0nEroryNHEzINXSvyhmTyUHAOklTjm3NVpqLrbGbFw9d6+F8pVskWtYyfFVl9PuW0EhbVox9inWGQIzbCMdVzjGb5M3ua/taNtTz8W6hsUQm8SB7UANR36klHUIWYmSQ5ZgyIkCZ7x6pNyRL2sr6UtFAfsp+vnGsIzakKHvZDXz7uBnRl6/Z7f [email protected]" "/Users/steve/.ssh/authorized_keys"': ExitStatus = 1: 10.25.2022 22:41:25Z
  DateTime=2022-10-25T22:41:25.3448659Z: 10.25.2022 22:41:25Z

Complete log:

Xamarin.Messaging.Integration.State.ServerStateContext Error: 0 : !An error occurred while trying to establish an SSH connection with SSH keys to '192.168.178.27:22': 10.25.2022 22:36:36Z
  DateTime=2022-10-25T22:36:36.5456548Z: 10.25.2022 22:36:36Z
Xamarin.Messaging.Integration.State.ServerStateContext Information: 0 : Server State transition from DisconnectedState to ConfiguringState on macbook.lan (192.168.178.27): 10.25.2022 22:41:20Z
  DateTime=2022-10-25T22:41:20.2772963Z: 10.25.2022 22:41:20Z
Xamarin.Messaging.Integration.State.ServerStateContext Information: 0 : Checking host configuration for connecting to 'macbook.lan'...: 10.25.2022 22:41:20Z
  DateTime=2022-10-25T22:41:20.3057061Z: 10.25.2022 22:41:20Z
Xamarin.Messaging.Integration.State.ServerStateContext Information: 0 : !Checking host configuration for connecting to 'macbook.lan'...: 10.25.2022 22:41:20Z
  DateTime=2022-10-25T22:41:20.3057061Z: 10.25.2022 22:41:20Z
Xamarin.Messaging.Integration.State.ServerStateContext Information: 0 : Checking SSH configuration...: 10.25.2022 22:41:20Z
  DateTime=2022-10-25T22:41:20.3487326Z: 10.25.2022 22:41:20Z
Xamarin.Messaging.Integration.State.ServerStateContext Information: 0 : !Checking SSH configuration...: 10.25.2022 22:41:20Z
  DateTime=2022-10-25T22:41:20.3487326Z: 10.25.2022 22:41:20Z
Xamarin.Messaging.Ssh.SshCommandRunner Warning: 0 : Failed to execute 'grep "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDRpqma2f+6ghu6P2/Jxx2Aj6+4kY/1tFpkvM1CdlscbvESZFsYakl90P9YvXQhHTXhK6QUHgj4E9s+Ze4PxmXSfYd7b3imWpbSOIqWrlC4rfMn31F3EyJ60Cpc9DO15MtiVS9ctTWBKXzRU8NbUlek8LppEID5Xv0nEroryNHEzINXSvyhmTyUHAOklTjm3NVpqLrbGbFw9d6+F8pVskWtYyfFVl9PuW0EhbVox9inWGQIzbCMdVzjGb5M3ua/taNtTz8W6hsUQm8SB7UANR36klHUIWYmSQ5ZgyIkCZ7x6pNyRL2sr6UtFAfsp+vnGsIzakKHvZDXz7uBnRl6/Z7f [email protected]" "/Users/steve/.ssh/authorized_keys"': ExitStatus = 1: 10.25.2022 22:41:25Z
  DateTime=2022-10-25T22:41:25.3448659Z: 10.25.2022 22:41:25Z
Xamarin.Messaging.Integration.State.ServerStateContext Information: 0 : Checking host configuration for connecting to 'macbook.lan'...: 10.25.2022 22:41:25Z
  DateTime=2022-10-25T22:41:25.4160488Z: 10.25.2022 22:41:25Z
Xamarin.Messaging.Integration.State.ServerStateContext Information: 0 : !Checking host configuration for connecting to 'macbook.lan'...: 10.25.2022 22:41:25Z
  DateTime=2022-10-25T22:41:25.4160488Z: 10.25.2022 22:41:25Z
Xamarin.Messaging.Integration.State.ServerStateContext Information: 0 : Server State transition from ConfiguringState to DisconnectingState on macbook.lan (192.168.178.27): 10.25.2022 22:41:25Z
  DateTime=2022-10-25T22:41:25.4275618Z: 10.25.2022 22:41:25Z
Xamarin.Messaging.Integration.State.ServerStateContext Information: 0 : Starting disconnection from macbook.lan...: 10.25.2022 22:41:25Z
  DateTime=2022-10-25T22:41:25.4315733Z: 10.25.2022 22:41:25Z
Xamarin.Messaging.Integration.State.ServerStateContext Information: 0 : !Starting disconnection from macbook.lan...: 10.25.2022 22:41:25Z
  DateTime=2022-10-25T22:41:25.4315733Z: 10.25.2022 22:41:25Z
Xamarin.Messaging.Integration.State.ServerStateContext Information: 0 : Server State transition from DisconnectingState to DisconnectedState on macbook.lan (192.168.178.27): 10.25.2022 22:41:25Z
  DateTime=2022-10-25T22:41:25.4591158Z: 10.25.2022 22:41:25Z
Xamarin.Messaging.Integration.State.ServerStateContext Information: 0 : Starting disconnection from macbook.lan...: 10.25.2022 22:41:25Z
  DateTime=2022-10-25T22:41:25.4631158Z: 10.25.2022 22:41:25Z
Xamarin.Messaging.Integration.State.ServerStateContext Information: 0 : !Starting disconnection from macbook.lan...: 10.25.2022 22:41:25Z
  DateTime=2022-10-25T22:41:25.4631158Z: 10.25.2022 22:41:25Z
Xamarin.Messaging.Integration.State.ServerStateContext Information: 0 : The connection to 'macbook.lan' has been finished: 10.25.2022 22:41:25Z
  DateTime=2022-10-25T22:41:25.4641170Z: 10.25.2022 22:41:25Z
Xamarin.Messaging.Integration.State.ServerStateContext Information: 0 : !The connection to 'macbook.lan' has been finished: 10.25.2022 22:41:25Z
  DateTime=2022-10-25T22:41:25.4641170Z: 10.25.2022 22:41:25Z
Xamarin.Messaging.Integration.State.ServerStateContext Error: 0 : An error occurred while trying to establish an SSH connection with SSH keys to '192.168.178.27:22'
Xamarin.Messaging.Integration.MessagingConfigurationException: An error occurred while trying to establish an SSH connection with SSH keys to '192.168.178.27:22' ---> System.IO.FileNotFoundException: Could not find file 'C:\Users\Stefan\AppData\Local\Xamarin\MonoTouch\id_rsa'.
   at System.IO.__Error.WinIOError(Int32 errorCode, String maybeFullPath)
   at System.IO.FileStream.Init(String path, FileMode mode, FileAccess access, Int32 rights, Boolean useRights, FileShare share, Int32 bufferSize, FileOptions options, SECURITY_ATTRIBUTES secAttrs, String msgPath, Boolean bFromProxy, Boolean useLongPath, Boolean checkHost)
   at System.IO.FileStream..ctor(String path, FileMode mode, FileAccess access, FileShare share)
   at Renci.SshNet.PrivateKeyFile..ctor(String fileName, String passPhrase)
   at Xamarin.Messaging.Ssh.MessagingAuthenticationMethod.InitializePrivateKeyAuthentication(String username, ISshInformationProvider sshInformationProvider) in D:\a\_work\1\s\src\Xamarin.Messaging.Ssh\MessagingAuthenticationMethod.cs:line 84
   at Xamarin.Messaging.Integration.State.ConfiguringState.<GetSshConnectionAsync>d__17.MoveNext() in D:\a\_work\1\s\src\Xamarin.Messaging.Integration\State\ConfiguringState.cs:line 193
   --- End of inner exception stack trace ---
   at Xamarin.Messaging.Integration.State.ConfiguringState.<GetSshConnectionAsync>d__17.MoveNext() in D:\a\_work\1\s\src\Xamarin.Messaging.Integration\State\ConfiguringState.cs:line 224
--- End of stack trace from previous location where exception was thrown ---
   at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
   at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
   at Xamarin.Messaging.Integration.State.ConfiguringState.<GetSshConnectionAsync>d__15.MoveNext() in D:\a\_work\1\s\src\Xamarin.Messaging.Integration\State\ConfiguringState.cs:line 127
--- End of stack trace from previous location where exception was thrown ---
   at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
   at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
   at Xamarin.Messaging.Integration.State.ConfiguringState.<OnExecutingAsync>d__14.MoveNext() in D:\a\_work\1\s\src\Xamarin.Messaging.Integration\State\ConfiguringState.cs:line 70: 10.25.2022 22:41:25Z
  DateTime=2022-10-25T22:41:25.4907201Z: 10.25.2022 22:41:25Z
Xamarin.Messaging.Integration.State.ServerStateContext Error: 0 : !An error occurred while trying to establish an SSH connection with SSH keys to '192.168.178.27:22': 10.25.2022 22:41:25Z
  DateTime=2022-10-25T22:41:25.4917191Z: 10.25.2022 22:41:25Z
System.Net.Mqtt.Sdk.ClientPacketListener Error: 0 : Client - An error occurred while listening and dispatching packets
System.IO.IOException: Unable to read data from the transport connection: An existing connection was forcibly closed by the remote host. ---> System.Net.Sockets.SocketException: An existing connection was forcibly closed by the remote host
   at System.Net.Sockets.Socket.EndReceive(IAsyncResult asyncResult)
   at System.Net.Sockets.NetworkStream.EndRead(IAsyncResult asyncResult)
   --- End of inner exception stack trace ---
   at System.Net.Sockets.NetworkStream.EndRead(IAsyncResult asyncResult)
   at System.Threading.Tasks.TaskFactory`1.FromAsyncTrimPromise`1.Complete(TInstance thisRef, Func`3 endMethod, IAsyncResult asyncResult, Boolean requiresSynchronization): 10.25.2022 22:45:28Z
  DateTime=2022-10-25T22:45:28.6158613Z: 10.25.2022 22:45:28Z
System.Net.Mqtt.Sdk.ClientPacketListener Error: 0 : Client - An error occurred while listening and dispatching packets
System.IO.IOException: Unable to read data from the transport connection: An existing connection was forcibly closed by the remote host. ---> System.Net.Sockets.SocketException: An existing connection was forcibly closed by the remote host
   at System.Net.Sockets.Socket.EndReceive(IAsyncResult asyncResult)
   at System.Net.Sockets.NetworkStream.EndRead(IAsyncResult asyncResult)
   --- End of inner exception stack trace ---
   at System.Net.Sockets.NetworkStream.EndRead(IAsyncResult asyncResult)
   at System.Threading.Tasks.TaskFactory`1.FromAsyncTrimPromise`1.Complete(TInstance thisRef, Func`3 endMethod, IAsyncResult asyncResult, Boolean requiresSynchronization): 10.25.2022 22:45:28Z
  DateTime=2022-10-25T22:45:28.6168613Z: 10.25.2022 22:45:28Z
System.Net.Mqtt.Sdk.MqttClientImpl Error: 0 : System.IO.IOException: Unable to read data from the transport connection: An existing connection was forcibly closed by the remote host. ---> System.Net.Sockets.SocketException: An existing connection was forcibly closed by the remote host
   at System.Net.Sockets.Socket.EndReceive(IAsyncResult asyncResult)
   at System.Net.Sockets.NetworkStream.EndRead(IAsyncResult asyncResult)
   --- End of inner exception stack trace ---
   at System.Net.Sockets.NetworkStream.EndRead(IAsyncResult asyncResult)
   at System.Threading.Tasks.TaskFactory`1.FromAsyncTrimPromise`1.Complete(TInstance thisRef, Func`3 endMethod, IAsyncResult asyncResult, Boolean requiresSynchronization): 10.25.2022 22:45:28Z
  DateTime=2022-10-25T22:45:28.6188610Z: 10.25.2022 22:45:28Z
Xamarin.Messaging.Ssh.MessagingService Error: 0 : An error occurred on the underlying client while executing an operation. Details: Unable to read data from the transport connection: An existing connection was forcibly closed by the remote host.: 10.25.2022 22:45:28Z
  DateTime=2022-10-25T22:45:28.6413821Z: 10.25.2022 22:45:28Z

The exception about the missing file is misleading. First of it does not exist but if you watch the folder during the connection process it gets created among with other files and when it fails it gets deleted again. So I am assuming that is a different error.

And ssh login to the machine and everything works fine. I can ssh into it and if you enable verbose login there are other commands as well as scp which are being executed just fine.

Has anyone encountered this problem and has a solution?

Visual Studio 2022

OSX Ventura with XCode 14.0.1 and Visual Studio 17.3.8 (build5)

Upvotes: 3

Views: 1487

Answers (3)

Steve
Steve

Reputation: 433

As pointed out by two comments due to Ventura shipping with a new Openssh we need to add a workaround until Xamarin fixed the ssh connection process.

In /etc/ssh/sshd_config add

HostkeyAlgorithms +ssh-rsa
PubkeyAcceptedAlgorithms +ssh-rsa

And then restart sshd with:

launchctl stop com.openssh.sshd && launchctl start com.openssh.sshd

Upvotes: 2

o.k.w
o.k.w

Reputation: 25810

It turns out that for a similar problem I encountered, the root cause was SSH-related due to Ventura and nothing to do with VS or Firewall.

This post described the problem and the solution.

macOS Ventura comes with OpenSSH_9.0p1 which disables by default the RSA signatures using SHA1 algorithm. If you read the release notes, you can find method to re-enable it, until Microsoft release update of the Xamarin pairing's SSH implementation.

Potentially-incompatible changes

This release disables RSA signatures using the SHA-1 hash algorithm by default. This change has been made as the SHA-1 hash algorithm is cryptographically broken, and it is possible to create chosen-prefix hash collisions for <USD$50K

For most users, this change should be invisible and there is no need to replace ssh-rsa keys. OpenSSH has supported RFC8332 RSA/SHA-256/512 signatures since release 7.2 and existing ssh-rsa keys will automatically use the stronger algorithm where possible.

This post describes how you may restart the SSHD without rebooting the machine.

I followed the steps and I have no more SSH related connection/pairing problem.

Upvotes: 6

Zack
Zack

Reputation: 1609

You can check that your firewall allows incoming connections through port 22 (the default for SSH), and check that the IP address you are using for the Mac is correct, you can find the IP address under System Preferences > Sharing > Remote Login on the Mac. Then you can check whether the SSH server can be connected normally, you can refer to the steps in the official Xamarin.iOS documentation.

Upvotes: 0

Related Questions