Yes, it's definitely possible to run an SFTP server locally, start it in a debugger, and put breakpoints wherever you need in your code. We do that all the time, and I'm sure our users do that as well. No need to use VM or anything, it's basically just an ordinary .NET application that just happens to listen on a TCP port, to which you can connect using any SFTP client, and then those breakpoints will get hit. On the other hand, if you wanted to debug code running in a server in a VM, you would have to attach debugger remotely to a server instance running there.
So it looks like what you need is this: Run an instance of the server app locally, and use an SFTP client to connect to that instance, not to another instance in a VM.