
我們正在嘗試使用簡單的終端程式連接到Linux telnet服務;我懷疑伺服器設定為預設 VT-100,並且 telnet 伺服器發送控制握手序列,期望終端回覆其支援的選項,並掛起等待終端回覆。
不幸的是終端只是裸露的通訊程序並且不了解telnet協定。
有沒有辦法告訴telnet伺服器(例如透過設定特定的終端類型)不要開始識別遠端終端屬性,而是直接進行通訊?
編輯:
請編輯問題並提供更多詳細資訊:您使用的是什麼終端,它是什麼「裸通訊」程式?
通訊程式在連接埠23上開啟與Linux PC的TCP連接,然後發送在鍵盤上鍵入的字符,並將接收到的字符顯示在螢幕上,而不進行任何字元處理。
您可以在伺服器上執行 netcat 來代替(或附加) telnetd 嗎,並使用它來調試通訊本身是否正常運作
我不確定,我不控制兩台機器。但是,運行終端的機器能夠連接到linux機器,並且linux機器能夠發送telnet協議控製字元(你可以在圖片上看到它- 白色字元是0xff - telnet選項的開始標記),這是100%的事實嗎?我不能說100%,因為我沒有Wireshark日誌,但似乎通訊工作正常,而且它是telnet伺服器,不透過telnet協定握手。
連線後,您想登入還是想做其他事情?您可以在終端機上使用更安全的東西,例如 ssh 嗎?
是的,我希望 telnet 伺服器顯示“login:”,要求登入系統。 Linux 機器上的 telnet 服務可以運行,因為可以使用 telnet 用戶端從第三台機器記錄它 - 但該 telnet 用戶端了解 telnet 協定並對其做出回應。在上述情況下,終端程式對 telnet 控製程式碼/協定一無所知,並將它們顯示為字符,而不進行任何進一步的操作(根據 telnet 協定進行回應)。
答案1
首先,telnet協商與終端類型無關。 (實際上終端類型是決定在 telnet 協商期間。
你怎麼能停用它取決於伺服器上特定的 telnetd 實作。 (我在 Linux 上數了五種不同的 in.telnetd,其他作業系統也有自己的。)
有時,您可以在服務配置中(即在 systemd .service 檔案或 /etc/inetd 中)使用 telnetd 命令列選項。
如果一切都失敗了,你可以編譯你自己的打過補丁的 telnetd 版本;所有 Linux 發行版都有一種根據官方配方重建軟體套件的方法(dpkg-buildpackage、makepkg...)