我正在尝试使用 SSH.NET 库(V2013.4.7)通过 SOCKS 代理服务器连接到外部 SFTP 服务器,但出现错误“ SOCKS5:Host unreachable ”。该连接在 WinSCP 等其他工具中运行良好。
我正在使用使用ProxyType.Socks5协议通过PasswordConnectionInfo实例化的类SftpClient,如下面的给定构造函数所示: public PasswordConnectionInfo(string host,int port,string username,string password,ProxyTypes proxyType,string proxyHost,int proxyPort) - 主机端口编号为30206,这里的代理端口默认为1080
调试 ssh.net 源代码,在我的机器向代理发送连接请求并等待类Session.cs中的响应后抛出错误:
// Send port
this.SocketWriteByte((byte)(this.ConnectionInfo.Port / 0xFF));
this.SocketWriteByte((byte)(this.ConnectionInfo.Port % 0xFF));
// Read Server SOCKS5 version
if (this.SocketReadByte() != 5) **** error is thrown here after about 2 minutes!
使用 WireShark,我检查了我的机器/代理握手是否成功,并且正在正确查找外部服务器的 IP 地址 - 我在上面的库源代码中不确定的位置是端口号的 2 行正在指定。“ 0xFF ”有什么用?
根据Socks5协议,端口号指定在: [字段6:网络字节序端口号,2字节]。 我怀疑端口号没有正确发送!
如果有人可以对此提出一些建议,或者如果有人有类似的问题,或者如果有人成功地完成了这项工作,我们将不胜感激。
谢谢你。