我使用此代码连接到SFTP服务器:
var connectionInfo = new PasswordConnectionInfo(txtHost.Text, 22, txtUsername.Text, txtPassword.Text, ProxyTypes.Http, "209.xx.xxx.xxx", 3128,"proxyUser","proxyPass");
sftp = new SftpClient(connectionInfo);
try
{
sftp.Connect();
addItemToListBox("Connect", "Connect to server Success.");
BeginInvoke((MethodInvoker)delegate()
{
connect_state(false);
});
connection_flag = true;
}
catch
{
addItemToListBox("Connect", "Connect to server failed.");
addItemToListBox("Connect", "Try agine.");
connection_flag = false;
}
现在,在使用Wireshark嗅探我的连接时,我可以看到HTTP请求,包括SFTP服务器IP地址。
如何从代理服务器隐藏SFTP服务器IP地址?
答案 0 :(得分:1)
您只能看到代理请求。底层的SSH和SFTP数据包是(应该)加密的。
关于从代理服务器隐藏IP地址:
您无法在前往目标服务器的路上从任何代理服务器(或路由器或其他网络组件)隐藏IP地址,因为代理服务器(或其他组件)需要知道将请求路由到何处。
唯一的解决方法是隧道穿过代理服务器。但是为此,您必须能够在目标服务器之前在某个网络组件上设置隧道的末端,但是在代理之后(并且您必须愿意使隧道的末端IP地址对于代理)。通过这种方式,隧道结束成为代理的目的地。
简单地说,如果您不控制代理和目标之间的任何网络组件,则必须让代理知道目标IP。没有办法解决这个问题。这就是互联网的运作方式。 IP地址是识别目的地的唯一方法。