gpt4 book ai didi

c# - 如何在 C# 中使用 SSH.NET 库连接 IPv6 地址

转载 作者:行者123 更新时间:2023-11-30 12:25:19 27 4
gpt4 key购买 nike

我想通过 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 缺少网络接口(interface)的结论后,我将 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 和其他人 ;)

最佳答案

如果您连接到链接本地地址 (FE80::),则需要使用 % 指定接口(interface)名称,例如 FE80::%eth0

因为你可以有多个链接本地地址,你需要告诉你的操作系统使用哪个接口(interface)。对于单播地址,操作系统根据路由表知道要使用哪个接口(interface)。

关于c# - 如何在 C# 中使用 SSH.NET 库连接 IPv6 地址,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31674350/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com