我正在尝试通过SharpSSH连接到ftp,如下所示:
Sftp Connection = new Sftp(ftpAddress, FTPLogin, FTPPasword);
Connection.Connect();
导致JSchException:
System.Net.Sockets.SocketException: The requested name is valid, but no data of the requested type was found
at System.Net.Dns.InternalGetHostByName(String hostName, Boolean includeIPv6)
at System.Net.Dns.GetHostByName(String hostName)
at Tamir.SharpSsh.java.net.Socket..ctor(String host, Int32 port)
at Tamir.SharpSsh.jsch.Util.createSocket(String host, Int32 port, Int32 timeout)
经过一番搜索,我尝试了这段代码:
IPHostEntry ip = Dns.GetHostEntry(ftpAddress);
我得到SocketException:{没有这样的主人知道}
现在有一些背景 - 我可以通过主机名和IP地址(外部和内部)与Filezilla连接到ftpAdress。
当我> ping ftp.mydomain.com
时
我得到> 10.5.165.15
但是在> ping -a 10.5.165.15上
我得到> ftpnew.mydomain.com
如果我是对的,我因DNS而被拒绝<> revDNS问题。
我的问题是 - 我能做些什么让我的sftp连接正常工作。
答案 0 :(得分:4)
通过检查每种可能性找到解决方案,这就是我如何建立连接: 首先我的ftpAddress设置为extrernal / internal IP。
IPHostEntry ip = Dns.GetHostByName(ftpAddress);
Sftp Connection = new Sftp(ip.ToString(),FTPLogin,FTPPassword);
Connection.Connect()
似乎我的错误不是关于DNS<> revDNS,而是因为我试图呼叫的主机地址中有额外的'\'标志。
答案 1 :(得分:2)
我遇到了同样的问题,现在我找到了解决方案。
使用以下类型ftpAddress(URL):
sftp.abcdefg.com
有22个端口号。和休息将是一样的。
不要使用任何类型的正斜杠" /"和反斜杠" \"在URL结束或开始。
我在这个网址= sftp.abcdefg.com/
答案 2 :(得分:0)
可以工作。删除主机名开头的sftp://。和,在参数中添加22端口。
using X = Renci.SshNet;
ConnectionInfo = new X.ConnectionInfo(_host, 22, _usr,
new X.AuthenticationMethod[] {
new X.PasswordAuthenticationMethod (_usr, _pwd)
}); //_host = yourfavoritesite.whatever.com -- take out sftp://
SftpClient = new X.SftpClient(ConnectionInfo);
SftpClient.Connect();
答案 3 :(得分:0)
此错误的另一个来源是服务器名称开头是否有空格,例如:
<add key="SftpHost" value=" sftp.whatever.com" />
答案 4 :(得分:0)
仅输入主机的IP地址。 例如
错误:“ sftp // 10.11.12.13”将导致错误 正确:“ 10.11.12.13”没关系