Netcat 问题,getaddrinfo:名称或服务未知

Netcat 问题,getaddrinfo:名称或服务未知

我正在尝试使用 netcat 将 SSH 流量(双向)从一台主机上的端口 2222 中继到另一台主机上的端口 22。出于测试目的,我在此处重定向到 127.0.0.1:22,而不是远程主机。

以下是我收到的命令和错误:

nc -n –l 2222 0<backpipe | nc -n 127.0.0.1 22 1>backpipe
getaddrinfo: Name or service not known

我肯定忽略了某些非常明显的东西,但我没发现。我只使用 IP 地址(甚至使用“-n”也不解析任何内容),但它似乎仍在尝试进行 DNS 查找。

这是 CentOS 6.x [64]。

我错过了什么?

答案1

我成功了。问题是我必须为第一个 nc 命令指定主机,如下所示:

nc -n 192.168.1.2 -l 2222 0<backpipe | nc -n 127.0.0.1 22 1>backpipe" 

根据手册页,通常不需要使用“-l”指定主机(默认为本地主机)。

答案2

我不认为这个错误与 centos 或 netcat 有关。我遇到了同样的错误,只是被 paramiko 包装了,它是 ssh 命令的 Python 模块,因此您不需要使用 bash。

使用这个 paramiko 模块,我得到了非常相似的

getaddrinfo(主机、端口、系列、类型、协议、标志):socket.gaierror:[Errno -2] 名称或服务未知

当尝试 ssh 连接到服务器时。

当我尝试使用 bash 模式(没有 Python/paramiko)的“真实” ssh 建立相同连接时,这次出现ssh-keyscan错误:

getaddrinfo SOMETHING@MY_SERVER.com:名称或服务未知

事实证明,SOMETHING在服务器地址中添加前缀是错误的。我以为SOMETHING@MY_SERVER.comSOMETHING虽然只是“username@”前缀,但 中的 属于服务器名称。我对此感到困惑,因为我得到了另一个不同的用户名,并且SOMETHING非常技术性,例如“www-SOME_GENERAL_WORD”,在我看来不像用户名。

删除用户名前缀,只MY_SERVER.com留下一个,错误就解决了。这意味着:如果您遇到这样的错误,请检查您的服务器地址 - 清除其中的任何前缀或后缀。

相关内容