【问题标题】:SFTP connectivity DNS issue - System.Net.Sockets.SocketException: The requested name is valid, but no data of the requested type was foundSFTP 连接 DNS 问题 - System.Net.Sockets.SocketException:请求的名称有效,但未找到请求类型的数据
【发布时间】:2012-12-05 19:53:07
【问题描述】:

我正在尝试通过 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: {No such host is known}

现在一些背景知识 - 我可以通过主机名和 IP 地址(外部和内部)将 Filezilla 连接到 ftpAdress。 当我 >ping ftp.mydomain.com
我得到 >10.5.165.15
但是在 >ping -a 10.5.165.15
我得到 >ftpnew.mydomain.com

如果我是对的,我会因为 DNS revDNS 问题而被拒绝。

我的问题是 - 我该怎么做才能真正让我的 sftp 连接正常工作。

【问题讨论】:

  • 我现在面临同样的问题,我尝试在下面使用您的答案,但我收到了同样的错误。你能帮帮我吗?即使我的凭据正确,我也不明白为什么我会出错。

标签: c# dns sftp sharpssh reverse-dns


【解决方案1】:

仅输入主机的 IP 地址。 例如

错误:“sftp//10.11.12.13”这将导致错误 正确:“10.11.12.13”这没关系

【讨论】:

    【解决方案2】:

    此错误的另一个来源是服务器名称的开头是否有空格,例如:

        <add key="SftpHost" value=" sftp.whatever.com" />
    

    【讨论】:

      【解决方案3】:

      当我稍微重新安排名称和地址时,我的工作。去掉主机名开头的 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();
      

      【讨论】:

        【解决方案4】:

        我遇到了同样的问题,现在我找到了解决方案。 使用以下类型 ftpAddress(URL): sftp.abcdefg.com 带 22 个端口号。休息将是一样的。 不要在 URL 的末尾或开头使用任何类型的正斜杠“/”和反斜杠“\”。 这个 URL = sftp.abcdefg.com/

        我遇到了同样的问题

        【讨论】:

          【解决方案5】:

          通过检查所有可能性找到了解决方案,这就是我设法建立连接的方式: 首先我的 ftpAddress 设置为外部/内部 IP。

          IPHostEntry ip = Dns.GetHostByName(ftpAddress);
          Sftp Connection = new Sftp(ip.ToString(),FTPLogin,FTPPassword);
          Connection.Connect()
          

          看来我的错误与 DNSrevDNS 无关,而是由于我试图调用的主机地址中有额外的“\”符号。

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 2017-07-07
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2021-06-25
            • 1970-01-01
            • 2016-02-14
            相关资源
            最近更新 更多