Telnet
Telnet 以 linux 使用者身份登錄並提示
我試圖弄清楚 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
登錄提示。