Telnet

Telnet 以 linux 使用者身份登錄並提示

  • December 1, 2017

我試圖弄清楚 Ubuntu 伺服器上埠 23 的設置。它是由我的前任以相當棘手的方式設置的,現在我需要將功能遷移到新機器上。我大致知道它的作用,但我不知道細節,這是我現在需要知道的。粗略的功能是這樣的:

  • 使用者通過埠 23 以普通 linux 使用者身份登錄伺服器(始終使用同一使用者)。更多細節在下面…
  • 登錄後,系統會提示他們提供一些資訊
  • 他們在提示符處輸入資訊,然後將其註銷

我可以看到預設的 shell 是 bash(為保護隱私而修改了使用者名和號碼):

# grep theuser /etc/passwd
theuser:x:1111:1111::/home/theuser:/bin/bash

我可以看到.bash_profile腳本將使用者重定向到登錄時的提示:

$ cat /home/theuser/.bash_profile 
# .bash_profile

# Get the aliases and functions
if [ -f ~/.bashrc ]; then
       . ~/.bashrc
fi

# User specific environment and startup programs

PATH=$PATH:$HOME/scripts

export PATH
unset USERNAME

/home/theuser/scripts/prompts
exit

所以那裡沒有奧秘。但是我的問題是埠 23 到底如何連結到普通 linux 使用者的登錄提示?我確定是這種情況,因為我可以按如下方式登錄:

$ telnet localhost 23
Trying ::1...
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
machinename login: theuser
Password:
Last login: Fri Mar 24 14:25:48 CST 2017 from localhost on pts/5
prompt 1:

如果我檢查在埠 23 上執行的程序,那麼我會得到:

$ netstat -tulpn | grep 23
tcp        0      0 0.0.0.0:23              0.0.0.0:*               LISTEN      2222/inetd

所以連接由inetd. 但這對我沒有幫助,因為我不知道inetd在做什麼。如果我往裡看,/etc/inetd.conf我會看到以下行:

telnet      stream  tcp nowait  root    /usr/sbin/tcpd  /usr/sbin/in.telnetd

但這並沒有多大幫助。我已經知道telnet在這台機器上執行。我需要知道如何telnet配置以將使用者重定向到登錄提示。

讓 TELNET 伺服器監聽 TCP 埠 23 並不“棘手”。是正常的(本世紀使用TELNET的異常,只要不考慮就行了)。這是眾所周知的 TELNET 服務埠號。

並且in.telnetd沒有“配置”為將使用者“重定向”到登錄提示。的作用是向連接的客戶端呈現登錄界面。它的手冊頁(qv)非常明確:

Telnetd 通過分配一個偽終端設備來執行$$ … $$對於客戶端,然後創建一個登錄程序,該程序將偽終端的從端作為標準輸入、標準輸出和標準錯誤。Telnetd 操縱偽終端的主端,實現 telnet 協議並在遠端客戶端和登錄程序之間傳遞字元。

登錄程序正在執行程序,顯示login登錄提示。

引用自:https://unix.stackexchange.com/questions/353497