我想通过 SSH 连接到远程 GNU+Linux 机器并执行命令,但使用 IPv6 地址。使用 IPv4 地址,它工作得非常好。
我在 Ubuntu 15.04 上运行并使用 MonoDevelop (Mono 4.0)
这是我使用 Renci SSH.NET 库的示例代码:
SshClient sshClient = new SshClient (ipV6Address, user, pass);
sshClient.Connect ();
SshCommand sshCmd = sshClient.RunCommand (command);
sshClient.Disconnect ();
我还尝试使用 Tamirs SshSharp 和终端控制。
添加[ ]
到 IPv6 地址也不起作用。
我得到以下异常:
System.Net.Sockets.SocketException: Invalid arguments
at System.Net.Sockets.Socket+SocketAsyncResult.CheckIfThrowDelayedException () [0x00000] in <filename unknown>:0
at System.Net.Sockets.Socket.EndConnect (IAsyncResult result) [0x00000] in <filename unknown>:0
at Renci.SshNet.Session.SocketConnect (System.String host, Int32 port) [0x00000] in <filename unknown>:0
at Renci.SshNet.Session.Connect () [0x00000] in <filename unknown>:0
at Renci.SshNet.BaseClient.Connect () [0x00000] in <filename unknown>:0
at main program...
也许有人可以为我提供一个代码示例(在 C# 中)或告诉我一个明确支持 IPv6 地址的库。该库应该是免费的(最好有 Apache 许可)并且可用于商业用途。
问候维玛
编辑:
在得出我ipAddress
缺少网络接口的结论后,我将其更改ipAddress
为"fe80::xxxx:xxxx:xxxx:xxxx%2"
(是的 2 是正确的,我用 ping6 进行了测试)。
这似乎有点“更多”,因为异常变为:
System.ArgumentException: host
at Renci.SshNet.ConnectionInfo..ctor (System.String host, Int32 port, System.String username, ProxyTypes proxyType, System.String proxyHost, Int32 proxyPort, System.String proxyUsername, System.String proxyPassword, Renci.SshNet.AuthenticationMethod[] authenticationMethods) [0x00000] in <filename unknown>:0
at Renci.SshNet.PasswordConnectionInfo..ctor (System.String host, Int32 port, System.String username, System.Byte[] password, ProxyTypes proxyType, System.String proxyHost, Int32 proxyPort, System.String proxyUsername, System.String proxyPassword) [0x00000] in <filename unknown>:0
at Renci.SshNet.PasswordConnectionInfo..ctor (System.String host, Int32 port, System.String username, System.String password) [0x00000] in <filename unknown>:0
at Renci.SshNet.SshClient..ctor (System.String host, Int32 port, System.String username, System.String password) [0x00000] in <filename unknown>:0
at Renci.SshNet.SshClient..ctor (System.String host, System.String username, System.String password) [0x00000] in <filename unknown>:0
at main program...
解决了
使用 SSH.NET 的预发布包解决了我的问题!
感谢@MartinPrikryl 和其他人;)