无法访问具有反向SSH隧道的中间节点到公司防火墙后面的MSSQL服务器

时间:2017-07-06 03:46:33

标签: sql-server amazon-web-services networking

如果EC2实例是MSSQL计算机,我需要通过AWS EC2实例访问公司防火墙后面的MSSQL计算机。出于我们的目的,我将EC2实例称为“中间人”节点。

我计划使用SSH隧道执行此操作(如果您知道更好的解决方案,请告诉我。)

这就是我们所拥有的:

  1. MSSQL机器 - 在企业防火墙后面,无法访问互联网。
  2. 终端机 - 在企业防火墙后面,可以访问Internet和数据库机。
  3. AWS EC2实例(“中间人”) - 可在Internet上访问。开放端口:22,14430。
  4. 我需要通过中间节点连接到MSSQL机器(例如通过SQLWorkbenchJ或JDBC连接)。目标是访问中间节点 AS IF 它是企业防火墙背后的MSSQL机器。

    首先,我要在互联网上访问中间人节点。最后,我计划使中间人节点只能访问由AWS Data Migration Service配置的复制EC2实例。

    这是中间人/ etc / ssh_config文件的内容:

    cat /etc/ssh_config
    
    TCPKeepAlive yes
    ClientAliveInterval 240
    ClientAliveCountMax 99999
    GatewayPorts yes
    

    我多次重启中间人EC2实例。

    MSSQL机器无法直接访问Internet,我们必须通过终端机进行访问。

    在终端机器上(运行Windows 2008和Cygwin),我跑了:

    nohup ssh -i /cygdrive/c/Sync/middleman.pem -f -N -R 14330:private_hostname_of_mssql_machine:1433 ec2-user@public_hostname_of_middleman_machine
    

    在中间人节点(运行AWS Linux和mssql cli)上,我遇到 NO 问题:

    mssql -s localhost -o 14330 -u username -p password -d database_name
    

    在此阶段我没有遇到任何问题。我可以通过mssql工具访问SSH shell中的中间节点上的MSSQL服务器,没有任何问题。

    但是,我无法在笔记本电脑上与中间节点建立连接:

    mssql -s public_hostname_of_middleman_machine -o 14330 -u username -p password -d database_name
    

    我收到的错误信息是:

    Error: Failed to connect to public_hostname_of_middleman_machine:14330 - connect ECONNREFUSED ip_of_middleman_machine:1433
    

    我已经检查过了 - mssql可以在Internet上联系中间人机器的主机名(否则会返回“getaddrinfo ENOTFOUND”错误)。由于其他原因,该连接被拒绝。

    我需要使用AWS DMS复制MSSQL数据库,并且需要复制服务器指向中间人节点(我无法直接建立到复制服务器的反向SSH隧道)

0 个答案:

没有答案