執行telnet指令開啟終端機階段作業,並登入遠端主機。
(1)用法:
用法: telnet [參數] [主機]
(2)功能:
功能: telnet命令通常用來遠程登錄。
原理: Telnet服務雖然也屬於客戶機/服務器模型的服務,但它更大的意義在於實現了基於Telnet協議的遠程登錄(遠程交互式計算)。
telnet實現的遠程登錄:
分時系統允許多個用戶同時使用一台計算機,為了保證系統的安全和記帳方便,系統要求每個用戶有單獨的帳號作為登錄標識,系統還為每個用戶指定了一個口令。用戶在使用該系統之前要輸入標識和口令,這個過程被稱為'登遠程登陸是指用戶使用Telnet命令,使自己的計算機暫時成為遠程主機的一個仿真終端的過程。仿真終端等效於一個非智能的機器,它只負責把用戶輸入的每個字符傳遞給主機,再將主機輸出的每個信息回顯在屏幕上。
telnet的簡介:
Telnet協議是TCP/IP協議族中的一員,是Internet遠程登陸服務的標准協議和主要方式。它為用戶提供了在本地計算機上完成遠程主機工作的能力。在終端使用者的電腦上使用telnet程序,用它連接到服務器。終端使用者可以在telnet程序中輸入命令,這些命令會在服務器上運行,就像直接在服務器的控制台上輸入一樣。可以在本地就能控制服務器。要開始一個 telnet會話,必須輸入用戶名和密碼來登錄服務器。
Telnet是常用的遠程控制Web服務器的方法。但是,telnet因為采用明文傳送報文,安全性不好,很多Linux服務器都不開放telnet服務,而改用更安全的ssh方式了。但仍然有很多別的系統可能采用了telnet方式來提供遠程登錄,因此弄清楚telnet客戶端的使用方式仍是很有必要的。
telnet命令還可做別的用途,比如確定遠程服務的狀態,比如確定遠程服務器的某個端口是否能訪問。
(3)選項參數:
1) -8 允許使用8位字符資料,包括輸入與輸出。
2) -a 嘗試自動登入遠端系統。
3) -b<主機別名> 使用別名指定遠端主機名稱。
4) -c 不讀取用戶專屬目錄里的.telnetrc文件。
5) -d 啟動排錯模式。
6) -e<脫離字符> 設置脫離字符。
7) -E 濾除脫離字符。
8) -f 此參數的效果和指定"-F"參數相同。
9) -F 使用Kerberos V5認證時,加上此參數可把本地主機的認證數據上傳到遠端主機。
10) -k<域名> 使用Kerberos認證時,加上此參數讓遠端主機采用指定的領域名,而非該主機的域名。
11) -K 不自動登入遠端主機。
12) -l<用戶名稱> 指定要登入遠端主機的用戶名稱。
13) -L 允許輸出8位字符資料。
14) -n<記錄文件> 指定文件記錄相關信息。
15) -r 使用類似rlogin指令的用戶界面。
16) -S<服務類型> 設置telnet連線所需的IP TOS信息。
17) -x 假設主機有支持數據加密的功能,就使用它。
18) -X<認證形態> 關閉指定的認證形態。
(4)實例:
1)[root@localhost xinetd.d]# telnet localhost 23 連接本地的主機,端口號為23
[root@localhost xinetd.d]# telnet localhost 23 Trying ::1... Connected to localhost. Escape character is '^]'. Kernel 3.10.0-229.el7.x86_64 on an x86_64 localhost login: sunjimeng Password: Last login: Sat Jun 18 18:29:24 from ::ffff:192.168.142.128 [sunjimeng@localhost ~]$
2)用真實物理機win10連接虛擬機中的centOS:
在命令窗口cmd中輸入:
C:\Users\JMSun>telnet 192.168.0.8
彈出另一個頁面:(這是在win10下的頁面,在這里可以自由操作centos,結果類似直接使用centos的終端。)
3)用telnet實現win10連接win7:
在用我自己的win10連接別人的win7系統前,我首先將win7的防火牆關閉,打開telnet服務。然后:
C:\Users\JMSun>ping 192.168.0.5 //這是win7機的IP,在這里先測試與它的連通性 正在 Ping 192.168.0.5 具有 32 字節的數據: 來自 192.168.0.5 的回復: 字節=32 時間=62ms TTL=128 來自 192.168.0.5 的回復: 字節=32 時間=6ms TTL=128 來自 192.168.0.5 的回復: 字節=32 時間=4ms TTL=128 來自 192.168.0.5 的回復: 字節=32 時間=2ms TTL=128 192.168.0.5 的 Ping 統計信息: 數據包: 已發送 = 4,已接收 = 4,丟失 = 0 (0% 丟失), 往返行程的估計時間(以毫秒為單位): 最短 = 2ms,最長 = 62ms,平均 = 18ms C:\Users\JMSun>telnet 192.168.0.5
彈出頁面:
在這里為了證明在登入和登出之后DOS操縱的不是同一台電腦,我用dir命令列出了它們各自目錄F下的文件,明顯不一樣:
telnet可以實現任意非附屬關系的擁有獨立IP地址的主機之間的連接。
(5)其他:
1.學習此命令遇到的問題:
一.centOS7.0下的shell中出現下面的問題:
[root@localhost sunjimeng]# telnet
bash: telnet: 未找到命令...
解決方案:
1)安裝telnet-server,telnet,xinted:
[root@localhost xinetd.d]# yum install telnet-server -y 已加載插件:fastestmirror, langpacks base | 3.6 kB 00:00 extras | 3.4 kB 00:00 Could not retrieve mirrorlist http://mirrorlist.centos.org/?release=7&arch=x86_64&repo=updates&infra=stock error was 12: Timeout on http://mirrorlist.centos.org/?release=7&arch=x86_64&repo=updates&infra=stock: (28, 'Operation too slow. Less than 1000 bytes/sec transferred the last 30 seconds') updates | 3.4 kB 00:00 updates/7/x86_64/primary_db | 4.9 MB 00:00:25 Loading mirror speeds from cached hostfile * base: mirrors.yun-idc.com * extras: mirror.lzu.edu.cn * updates: mirror.lzu.edu.cn 正在解決依賴關系 --> 正在檢查事務 ---> 軟件包 telnet-server.x86_64.1.0.17-59.el7 將被 安裝 --> 解決依賴關系完成 依賴關系解決 ========================================================================================================= Package 架構 版本 源 大小 ========================================================================================================= 正在安裝: telnet-server x86_64 1:0.17-59.el7 base 40 k 事務概要 ========================================================================================================= 安裝 1 軟件包 總下載量:40 k 安裝大小:55 k Downloading packages: 警告:/var/cache/yum/x86_64/7/base/packages/telnet-server-0.17-59.el7.x86_64.rpm: 頭V3 RSA/SHA256 Signature, 密鑰 ID f4a80eb5: NOKEY telnet-server-0.17-59.el7.x86_64.rpm 的公鑰尚未安裝 telnet-server-0.17-59.el7.x86_64.rpm | 40 kB 00:00:04 從 file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7 檢索密鑰 導入 GPG key 0xF4A80EB5: 用戶ID : "CentOS-7 Key (CentOS 7 Official Signing Key) <security@centos.org>" 指紋 : 6341 ab27 53d7 8a78 a7c2 7bb1 24c6 a8a7 f4a8 0eb5 軟件包 : centos-release-7-1.1503.el7.centos.2.8.x86_64 (@anaconda) 來自 : /etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7 Running transaction check Running transaction test Transaction test succeeded Running transaction 正在安裝 : 1:telnet-server-0.17-59.el7.x86_64 1/1 驗證中 : 1:telnet-server-0.17-59.el7.x86_64 1/1 已安裝: telnet-server.x86_64 1:0.17-59.el7 完畢!
[root@localhost etc]# yum install xinetd -y 已加載插件:fastestmirror, langpacks Loading mirror speeds from cached hostfile * base: mirrors.yun-idc.com * extras: mirrors.sina.cn * updates: mirrors.cug.edu.cn 正在解決依賴關系 --> 正在檢查事務 ---> 軟件包 xinetd.x86_64.2.2.3.15-12.el7 將被 安裝 --> 解決依賴關系完成 依賴關系解決 ========================================================================================================= Package 架構 版本 源 大小 ========================================================================================================= 正在安裝: xinetd x86_64 2:2.3.15-12.el7 base 128 k 事務概要 ========================================================================================================= 安裝 1 軟件包 總下載量:128 k 安裝大小:261 k Downloading packages: xinetd-2.3.15-12.el7.x86_64.rpm | 128 kB 00:00:00 Running transaction check Running transaction test Transaction test succeeded Running transaction 正在安裝 : 2:xinetd-2.3.15-12.el7.x86_64 1/1 驗證中 : 2:xinetd-2.3.15-12.el7.x86_64 1/1 已安裝: xinetd.x86_64 2:2.3.15-12.el7 完畢!
[root@localhost etc]# yum install telnet 已加載插件:fastestmirror, langpacks Loading mirror speeds from cached hostfile * base: mirrors.yun-idc.com * extras: mirrors.sina.cn * updates: mirrors.cug.edu.cn 正在解決依賴關系 --> 正在檢查事務 ---> 軟件包 telnet.x86_64.1.0.17-59.el7 將被 安裝 --> 解決依賴關系完成 依賴關系解決 ================================================================================ Package 架構 版本 源 大小 ================================================================================ 正在安裝: telnet x86_64 1:0.17-59.el7 base 63 k 事務概要 ================================================================================ 安裝 1 軟件包 總下載量:63 k 安裝大小:113 k Is this ok [y/d/N]: y Downloading packages: telnet-0.17-59.el7.x86_64.rpm | 63 kB 00:00 Running transaction check Running transaction test Transaction test succeeded Running transaction 正在安裝 : 1:telnet-0.17-59.el7.x86_64 1/1 驗證中 : 1:telnet-0.17-59.el7.x86_64 1/1 已安裝: telnet.x86_64 1:0.17-59.el7 完畢!
2)將xinetd、telnet服務加入開機自啟動:
[root@localhost etc]# systemctl enable xinetd.service [root@localhost etc]# systemctl enable telnet.socket ln -s '/usr/lib/systemd/system/telnet.socket' '/etc/systemd/system/sockets.target.wants/telnet.socket'
3)啟動這兩個服務:
[root@localhost etc]# systemctl start telnet.socket
[root@localhost etc]# systemctl start xinetd
二.我用win10的電腦和虛擬機中的centOS7.0想實現他們之間的通信,但是出現幾個問題:
1)centOS虛擬機無法ping到物理機win10:
解決方法:關閉win10的防火牆;
2)centOS虛擬機能ping到物理機,物理機win10卻無法ping到centOS虛擬機:
解決方法:將虛擬機的網絡配置由NAT模式轉向橋接模式。這里還涉及到橋接模式下的網絡配置問題,以后討論。
(NAT模式下主機與虛機之間不能互相ping通,因為虛擬機是靠主機的真實IP來訪問互聯網的,而橋接模式下虛擬機有自己獨立的動態IP地址。)
3)centOS能夠用telnet連接自身,卻無法連接物理機win10:
解決方法:由於在win10系統中telnet的服務端被刪去了(不安全性),只保留了客戶端,所以要想達到目的,必須重新下載telnet.server程序並安裝配置。在win10的打開或關閉windows功能里啟動telnet客戶端程序。並同時啟動服務端(如果是win7系統則直接在windows功能選項中打開就行。)。
這里存在一個細節:如果你的win10賬戶不是本地賬戶而是Microsoft網絡賬戶,則無法連接。需要新建一個本地賬戶:包括用戶名,密碼,和域名(domain name)。其中domain name不需要輸入,默認為空。
而且在centOS連接到win10后會出現亂碼問題,這個問題以后解決。(centOS采用UFT編碼方式,而win10采用GB2312編碼方式。)
4)centOS能夠用telnet連接物理機win10,物理機卻無法連接centOS,提示:
這是由於centOS並沒有開放23的端口,我們需要用防火牆開啟telnet的服務,並且開放指定端口:
在服務選項卡中開啟telnet服務:
並且在端口選項卡中開啟23號端口:
這里使用圖形界面,也可以使用文本界面,后面會專門介紹一次Linux的防火牆。
2.去除telnet服務的開機自啟功能:(為了安全着想)
[root@localhost sunjimeng]# systemctl disable telnet.socket rm '/etc/systemd/system/sockets.target.wants/telnet.socket' [root@localhost sunjimeng]# systemctl disable xinetd.service rm '/etc/systemd/system/multi-user.target.wants/xinetd.service'
3.用netstat查看當前已經建立的tcp連接:
[root@localhost sunjimeng]# netstat -t Active Internet connections (w/o servers) Proto Recv-Q Send-Q Local Address Foreign Address State tcp 0 0 192.168.142.128:42193 192.168.142.128:telnet ESTABLISHED tcp6 0 0 192.168.142.128:telnet 192.168.142.128:42193 ESTABLISHED
4.什么是xinetd?
xinetd(extended internet daemon)是新一代的網絡守護進程服務程序,又叫超級Internet服務器,常用來管理多種輕量級Internet服務。
xinetd提供類似於inetd+tcp_wrapper的功能,但是更加強大和安全。
xinetd是一個daemon程序,所有結尾帶d的程序都是daemon程序,也就是守護程序.
系統默認使用xinetd的服務可以分為如下幾類。
① 標准Internet服務:telnet、ftp。
② 信息服務:finger、netstat、systat。
③ 郵件服務:imap、imaps、pop2、pop3、pops。
④ RPC服務:rquotad、rstatd、rusersd、sprayd、walld。
⑤ BSD服務:comsat、exec、login、ntalk、shell、talk。
⑥ 內部服務:chargen、daytime、echo、servers、services、time。
⑦ 安全服務:irc。
⑧ 其他服務:name、tftp、uucp。
具體可以使用xinetd的服務在/etc/services文件中指出。
啟動和關閉xinetd服務:
service xinetd start
service xinetd stop
service xinetd restart
5.Telnet 客戶端命常用命令:
open : 使用 openhostname 可以建立到主機的 Telnet 連接。
close : 使用命令 close 命令可以關閉現有的 Telnet 連接。
display : 使用 display 命令可以查看 Telnet 客戶端的當前設置。
send : 使用 send 命令可以向 Telnet 服務器發送命令。支持以下命令:
ao : 放棄輸出命令。
ayt : “Are you there”命令。
esc : 發送當前的轉義字符。
ip : 中斷進程命令。
synch : 執行 Telnet 同步操作。
brk : 發送信號。
上表所列命令以外的其他命令都將以字符串的形式發送至 Telnet 服務器。例如,sendabcd 將發送字符串 abcd 至 Telnet 服務器,這樣,Telnet 會話窗口中將出現該字符串。
quit :使用 quit 命令可以退出 Telnet 客戶端。