Linux

Netcat 問題,getaddrinfo:名稱或服務未知

  • January 22, 2022

我正在嘗試使用 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 $$. 我錯過了什麼?

我得到了這個工作。問題是我必須為第一個 nc 命令指定主機,如下所示:

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

根據手冊頁,通常不需要使用“-l”主機(預設為本地主機)。

我不認為這個錯誤與centos或netcat有關。我有同樣的錯誤,只被 paramiko 包裝,這是用於 ssh 命令的 Python 模組,因此您不需要使用 bash。

有了這個 paramiko 模組,我得到了非常相似的

getaddrinfo(host, port, family, type, proto, flags): socket.gaierror:

$$ Errno -2 $$名稱或服務未知

嘗試 ssh 連接到伺服器時。

當我在 bash 模式(沒有 Python/paramiko)下使用“真實”ssh 嘗試相同的連接時,這次使用ssh-keyscan,錯誤是:

getaddrinfo SOMETHING@MY_SERVER.com:名稱或服務未知

原來是SOMETHING給伺服器地址加上前綴是錯誤的。我認為在 中SOMETHING@MY_SERVER.comSOMETHING雖然它只是“使用者名@”前綴,但它屬於伺服器名稱。我對此感到困惑,因為我獲得了另一個不同的使用者名,而且SOMETHING非常技術性,例如“www-SOME_GENERAL_WORD”,對我來說看起來不像使用者名。

刪除使用者名前綴以便僅MY_SERVER.com留下解決了錯誤。這意味著:如果您收到此類錯誤,請檢查您的伺服器地址 - 從任何前綴或後綴中清除它。

引用自:https://serverfault.com/questions/531047