Assuming the sg300 does user / password authentication and that's what you're using when you login directly - not public key correct? I don't believe I've enabled public key authentication in Net::SSH2::Cisco - looks like version 0.05 is needed :-)
Also, looks like you enabled Net::SSH2 debugging and the issue is happening before login. You may try 'dump_log' and provide a file name in the new() call, but that will only show data once you're logged in (which looks like you can't).
I had a bit of a different issue described here with fix http://vinsworldcom.blogspot.com/2017/05/netssh2-upgrade-access-to-cisco.html