Attempting to authenticate via username and privatekey only using the current SSH.NET library. I cannot get the password from the user so this is out of the question.
Your problem here is that you're still using a password, even though it is blank. Remove this line:
new PasswordAuthenticationMethod(username, ""),
This works perfectly for me:
var pk = new PrivateKeyFile(yourkey);
var keyFiles = new[] { pk };
var methods = new List();
methods.Add(new PrivateKeyAuthenticationMethod(UserName, keyFiles));
var con = new ConnectionInfo(HostName, Port, UserName, methods.ToArray());