Я хочу подключиться через 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 и Terminal Control.
Добавление [ ]
к адресу 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 и другим ;)
ipV6Address
, которое вы пытаетесь использовать? - person Martin Prikryl   schedule 28.07.2015ipv6 string
? - person Martin Prikryl   schedule 28.07.2015