複製鏈接
請複製以下鏈接發送給好友

遠程登錄

鎖定
遠程登錄(rlogin)是一個 UNIX 命令,它允許授權用户進入網絡中的其它 UNIX 機器並且就像用户在現場操作一樣。一旦進入主機,用户可以操作主機允許的任何事情,比如:讀文件、編輯文件或刪除文件等。Rlogin:遠程登錄命令 rlogin:Remote Login in Unix systems
中文名
遠程登錄
外文名
telnet
定    義
是一個 UNIX 命令
登陸命令
rlogin

遠程登錄詳細信息

Rlogin用於因特網主機的遠程登錄。它可以使用户坐在聯網的主機鍵盤前,登錄進入遠距離的另一聯網主機,成為那台主機的終端。這使用户可以方便地操縱世界另一端的主機,就像它就在身邊一樣。
通過遠程登錄,本地計算機便能與網絡上另一遠程計算機取得“聯繫”,並進行程序交互。進行遠程登錄的用户叫做本地用户,本地用户登錄進入的系統叫做遠地系統。
每一個遠程機器都有一個文件(/etc/hosts.equiv),包括了一個信任主機名集共享用户名的列表。本地用户名和遠程用户名相同的用户,可以在 /etc/hosts.equiv 文件中列出的任何機器上登錄到遠程主機,而不需要密碼口令。個人用户可以在主目錄下設置相似的個人文件(通常叫 .rhosts)。此文件中的每一行都包含了兩個名字 —主機名和用户名,兩者用空格分開。.rhosts 文件中的每一行允許一個登錄到主機名的名為用户名的用户無需密碼就可以登陸到遠程主機。如果在遠程機的 /etc/hosts.equiv 文件中找不到本地主機名,並且在遠程用户的 .rhosts 文件中找不到本地用户名和主機名時,遠程機就會提示密碼。列在 /etc/hosts.equiv 和 .rhosts 文件中的主機名必須是列在主機數據庫中的正式主機名,暱稱均不許使用。為安全起見,.rhosts 文件必須歸遠程用或根所有。
遠程終端類型和本地終端類型(在 TERM 變量環境中給定)相同。如果服務器支持,終端或窗口尺寸會被拷貝到遠程系統中,同時大小的變化也能反映出來。所有的回聲現象都發生在遠程站點,以致於遠程登錄都是透明的(除了延遲情況)。流控制藉助 <CTRL-S> 和 <CTRL-Q> 實現,並且輸入輸出中斷也得到很好的處理。

遠程登錄相關操作

遠程登錄遠程機上設置

1、確保啓動相應的服務項目。本來遠程桌面需要的服務項目是默認開啓的,但我自己以前曾經將系統服務減少以保證運行速度和安全。所以在此使用過程中發現了麻煩所在,嘗試了半天,終於還是確認了需要開啓以下服務項目才能進行遠程登錄。
若以下服務項目沒開啓的話,遠程登錄會提示以下信息:
客服端無法連接到遠程計算機
連接可能沒有啓用,或者計算機太忙,無法接受新連接。也有可能網絡問題使你無法連接。
請以後再試。如果問題繼續出現,請跟系統管理員聯繫。”
出現以上提示的話,可以考慮下是否服務項目沒啓動的問題。
遠程登錄需要的服務項目:
Server
Terminal Services
Telnet
NT LM Security Support Provider(Telnet需要依存與此服務,因此需要先啓動此服務)
2、取消防火牆對遠程控制的限制。
防火牆會導致遠程機登錄本地機時連接超時的狀況。
怎麼設置防火牆??自己搞哦。不行的話關閉了防火牆。哈哈。
3、添加遠程登錄桌面用户:
依次點擊“開始——所有程序——管理工具——計算機管理”;
系統工具中點擊“本地用户和組”,雙擊右邊的“用户”;
在右邊空白處右擊後選擇“新用户”,在彈出的對話框中輸入“用户名、全名、密碼、確認密碼”,其他的自己可以做設置。然後確定退出。
右擊新建的用户名——屬性——隸屬於,在彈出的對話框中點“添加”——高級——立刻查找——選中名稱為“Remote Desktop Users”,確定退出,這樣就完成了遠程登錄賬户的設置。
4、開啓遠程登錄設置:
右擊我的電腦——屬性——遠程——遠程桌面——在“允許用户遠程連接到此計算機”前打勾。確定後即可在遠程機上登錄了。

遠程登錄本地機設置

這個很簡單拉。
依次打開“開始菜單——所有程序——附件——通訊——遠程桌面連接”;
在打開的對話框中點擊“選項”,計算機上填入要登錄的主機的IP地址,還有剛才設置的用户名和密碼,在“高級”選項中設置網絡類型來優化設置,然後點擊“連接”就行了。
寫完這篇,似乎會有一個安全性的問題,即使你設置了遠程登錄密碼。但也有被破解的可能性存在。
所以,若你暫時不使用遠程登錄的話,可以將設置的賬號禁用,禁用剛才提到的服務項目即可。
有兩種登錄使用遠程主機的方法。一種是一個用户可以在一台聯網的主機上註冊,取得屬於他的賬號和密碼。一經註冊,就可以使用該賬號和密碼遠程登錄使用這台主機。還有一種是有許多因特網主機提供一些通過Telnet方式訪問的公共服務,該系統對任何用户都有效,通常不需要口令。Telnet協議缺省使用的是23端口,但是這些基於Telnet方式的公共服務往往會有自己的特定端口,這需要用户在連接時做出特別説明。
下面介紹兩種使用很廣泛的基於Telnet方式的公共服務:BBS和MUD。

遠程登錄BBS

電子公告牌系統(BBS,Bulletin Board System)是因特網上的一種電子信息服務系統。它提供一塊公共區域,每個用户都可以在上面發佈信息或提出看法。
大部分Telnet方式的BBS由教育機構或研究機構管理。BBS按不同的主題劃分為很多個佈告欄,佈告欄的設立依據大多數使用者的要求和喜好,使用者可以閲讀他人關於某個主題的最新看法,也可以將自己的想法毫無保留地貼到公告欄中。同樣,別人的迴應也是很快的(在人氣旺盛的BBS上,通常只需要幾分鐘,甚至幾秒鐘)。
如果需要單獨的交流,用户可以將想説的話直接發到某個人的BBS信箱中。如果想與正在BBS站上的某個人聊天,也可以啓動聊天程序,進行一對一或多個人的閒談。在BBS裏,人們之間的交流打破了空間、時間的限制,也無需考慮年齡、學歷、知識、社會地位、財富、外貌等。這樣,參與BBS的人可以處於一個平等的位置與其他人進行任何問題的探討。
不少BBS站點也同時提供Web瀏覽的訪問方式。但是由於Web方式本身的限制,有些BBS的功能(如聊天、發信息等)難以在Web下實現。因此,大部分使用者還是喜歡使用Telnet方式。
中國大陸是從1995年開始建立BBS的,最早的BBS站點有清華大學的水木清華、中國科技大學的浩瀚星雲和復旦大學的日月光華等。國內的BBS站點基本都使用火鳥(Firebird)系統,這是一套最早由台灣開發的中文BBS系統。由於它是開放源代碼的,因此比較大的站點一般都根據自己的實際需要加入了一些特殊的功能。
BBS上的言論通常都比較自由,特別是各高校的BBS。但隨着社會對網絡的關注,各高校也逐步加強了對BBS上內容的管理。如何能做到既控制好站點上的一些過激言論,又保持原有特色,並且成為學校管理層與學生之間的一個上傳下達的通暢渠道,將是高校BBS管理的一個新課題。

遠程登錄MUD

MUD(Multi-User Dimension)可稱為“網絡遊戲”,俗稱“泥巴”。
MUD在國外已發展多年,許多站點已經非常成熟,加入的玩家超過千人。最早的MUD是Richard Bartle和Roy Trubshaw在1979年編寫的MUD1,運行於VAX/VMS主機上,它影響着其後的MUD服務器端程序的發展。現代MUD的發展源於1989年一位大學生在週末時編寫的遊戲程序,命名為TinyMUD。這是一個簡單的多人遊戲,任何在因特網上的多個玩家,只要知道這個遊戲的地址和端口號,即可同時連入遊戲。這套系統運行於UNIX系統上,具有良好的可移植性,所以很快便廣為流傳。發展至今,世界各地有數千台UNIX主機上穩定地運行着MUD服務器端程序,有超過百萬的玩家參與其中,並且各種MUD站點還在繼續增加,這種規模和發展速度是原作者始料未及的。
傳統的MUD是基於文字模式以Telnet方式登錄的,已經出現支持圖形界面和聲音等的多媒體MUD站點。這些站點要求使用專門的用户端程序,多媒體資料大部分存儲於用户端,避免了大數據量的傳輸。有的站點甚至已經是基於Web界面了。不過也有人認為,MUD的魅力就在於文字描述帶來的無盡想象,引入圖形會限制玩家的想象。不管怎樣,這也算是MUD當前發展的一種新方向。
MUD也是基於因特網上的客户機/服務器模式,玩家使用Telnet用户端程序連接到MUD服務器上。遊戲程序的設計者和遊戲的管理者(俗稱“巫師”)在服務器端的程序上創造了龐大的虛擬現實空間,有崇山峻嶺、亭台樓榭,也有茂密的森林、廣袤的草原和沙漠,更有各種各樣的人物和怪獸等。玩家進入遊戲後要創建自己的角色,並通過控制這個角色的行動與其他角色對話,共同到幽奇的山洞中探險,或者為不同的陣營互相間大打出手。在一些遊戲中,玩家甚至可以自己建造房間、物品等。

遠程登錄命令

rlogin 的安全版本 slogin 和另外兩個 UNIX 工具 ssh 、scp 都屬於 Secure Shell suite,這是一個用於替代早期工具的界面和協議。
協議結構
rlogin 命令是:rlogin [-8EL] [-ec ] [-l 用户名]主機名可選標記
可選標記:
-8EL 總是支持8位數據路徑,除非開始字符和停止字符不是 Ctrl-S 和 Ctrl-Q,否則 Rlogin 命令使用7位數據路徑,去除校驗位。
-e Character 改變換碼符。替換為 Character 選擇的字符。
-f 引起認證(Credentials)轉發。如果當前不是採用的 Kerberos 5認證方法,該標記就會被忽略。如果當前認證沒有標記為可轉發,將導致認證失敗。
-F 引起認證(Credentials)轉發。另外遠程系統上的認證被標記為可轉發(允許它們傳送到另一個遠程系統上)。如果當前認證沒有標記為可轉發,將導致認證失敗。
-k realm 如果遠程站領域與本地系統領域不同,那麼允許用户指定遠程站的領域。為達到該目的,領域與DCE信元同義。如果當前不是採用的 Kerberos 5認證方法,該標記就會被忽略。
-l User 將遠程用户名改為你所指定的名字。否則將你的本地用户名應用於遠程主機。
主機名–建立遠程登錄會話的遠程機器
遠程登錄是Internet上較早提供的服務。用户通過Telnet命令使自己的計算機暫時成為遠地計算機的終端,直接調用遠地計算機的資源和服務。利用遠程登錄,用户可以實時使用遠地計算機上對外開放的全部資源,可以查詢數據庫、檢索資料,或利用遠程計算完成只有巨型機才能做的工作。此外, Internet的許多服務是通過Telnet訪問來實現的。
與遠程計算機連接後,可實現資源共享

遠程登錄軟件方式

鑑於用户對於遠程登錄的需求和用户偏於應用型的特徵,很多軟件公司研發了遠程共享和遠程控制軟件來實現遠程登錄,比如像國外的Mikogo,Teamviewer,Netviewer、pcanywhere,以及國內的網絡人遠程控制軟件、花生殼等,而Windows系統遠程桌面也能實現相似的操作。
通過軟件方式實現遠程登錄,首先需要安裝遠程登錄軟件,多數情況需要兩個甚至多個終端同時安裝。其次,正常情況下服務器可以做到24小時工作,但常常禁止安裝此類遠程控制軟件,這就意味着可能在利用軟件進行遠程登錄公司服務器的時候需要同時開啓兩台機器和一台服務器,所以常常在移動辦公中,需要同時開啓公司電腦以作為中轉,通過遠程操控公司電腦實現遠程登錄。遠程控制軟件已經日漸專業化、品牌化,在操作性和安全性方面都有很大的進步,網絡人等遠程控制還採用U盾加密來保護遠程控制的安全。使用軟件進行登錄的優點就是簡單易學,操作方便,體積小,綠色,響應速度快,畫質清晰等特點,比如像Mikogo本身只有1.6MB, 國產的網絡人遠程控制軟件也只是1M左右,適用於着重應用的用户。
遠程登錄逐漸被人們認識和廣泛地應用於學習,工作和生活中,更多、更方便的遠程登錄方式也會慢慢豐富市場,滿足各種不同階層、不同目的的用户需求。
應用進程的啓動
Rlogin的客户進程和服務器進程使用一個TCP連接。當普通的TCP連接建立完畢之後,客户進程和服務器進程之間將發生下面所述的動作。
1)客户進程給服務器進程發送4個字符串:(a)一個字節的0;(b)用户登錄進客户進程主機的登錄名,以一個字節的0結束;(c)登錄服務器進程端主機的登錄名,以一個字節的0結束;(d)用户終端類型名,緊跟一個正斜槓“/”,然後是終端速率,以一個字節的0結束。在這裏需要兩個登錄名字,這是因為用户登錄客户和服務器的名稱有可能不一樣。由於大多滿屏應用程序需要知道終端類型,所以終端類型也必須發送到服務器進程。發送終端速率的原因是因為有些應用隨着速率的改變,它的操作也有所變化。例如vi編輯器,當速率比較小的時候,它的工作窗口也變小。所以它不能永遠保持同樣大小的窗口。
2)服務器進程返回一個字節的0。
3)服務器進程可以選擇是否要求用户輸入口令。這個步驟的數據交互沒有什麼非凡的協議,而被當作是普通的數據進行傳輸。服務器進程給客户進程發送一個字符串(顯示在客户進程的屏幕上),通常是passWord:。假如在一定的限定時間內(通常是60秒)客户進程沒有輸入口令,服務器進程將關閉該連接。通常可以在服務器進程的主目錄(homeDirectory)下生成一個文件(通常叫.rhosts),該文件的某些行記錄了一個主機名和用户名。假如從該文件中已經記錄的主機上用已經記錄的用户名進行登錄,服務器進程將不提示我們輸入口令。但是很多關於安全性的文獻,如[Curry1992],強烈建議不要採用這種方法,因為這存在安全漏洞。假如提示輸入口令,那麼我們輸入的口令將以明文的形式發送到服務器進程。我們所鍵入的每個字符都是以明文的格式傳輸的。所以某人只要能夠截取網絡上的原始傳輸的分組,他就可以截獲用户口令。針對這個問題,新版本的Rlogin客户程序,例如
4.4BSD版本的客户程序,第一次採用了Kerberos安全模型。Kerberos安全模型可以避免用户口令以明文的形式在網絡上傳輸。當然,這要求服務器進程也支持Kerberos
([Curry1992]具體描述了Kerberos安全模型)。4)服務器進程通常要給客户進程發送請求,詢問終端的窗口大小(將在後面解釋)。客户進程每次給服務器進程發送一個字節的內容,並且接收服務器進程的所有返回信息。
同樣我們也採用了Nagle算法(在19.4節中曾經介紹),該算法可以保證在速率較低的網絡上,若干輸入字節以單個TCP報文段傳輸。操作其實很簡單:用户鍵入的所有東西被髮送到服務器,服務器發送給客户的任何信息返回到用户的屏幕上。
另外,服務器和客户之間還可以互相發送命令。在介紹這些命令之前,先介紹需要用到這些命令。
流量控制
默認情況下,流量控制是由Rlogin的客户進程完成的。客户進程能夠識別用户鍵入的STOP和START的ASCII字符(ControlS和ControlQ),並且終止或啓動終端的輸出。
假如不是這樣,每次我們為終止終端輸出而鍵入的Control_S字符將沿網絡傳輸到服務器進程,這時服務器進程將停止往網絡上寫數據。但是在寫操作終止之前,服務器進程可能已經往網絡上寫了一窗口的輸出數據。也就是説,在輸出停止之前,成千上萬的數據字節還將在屏幕上顯示。圖26-3顯示了這個情況。
服務器進程執行STOP/START的情況
客户的中斷鍵
當我們為中斷服務器正在運行的進程而鍵入一箇中斷字符時(通常是DELETE或Control_C),會發生和流量控制相同的問題。這個情況和圖26-3所示的類似,在一條TCP連接的管道上,從服務器進程向客户進程正在發送大量的數據,而客户進程同時在向服務器進程傳輸中斷字符。而我們的本意是要中斷字符儘快終止某個進程,使屏幕上不再有任何響應輸出。
在流量控制和中斷鍵這兩種情況中,流量控制機制很少終止客户進程到服務器進程的數據流。這個方向僅僅包含我們鍵入的字符。所以對於從客户輸出到服務器的非凡輸入字符(Control_S和中斷字符)不需要採用TCP的緊急方式(urgentmode)。
窗口大小的改變
假如是窗口風格的顯示方式,當應用程序在運行的時候,我們還可以動態地改變窗口的大小。一些應用程序(典型的如那些操作整個窗口的應用程序,如全屏編輯器)需要知道窗口大小的變化。大多數Unix系統提供這種功能,可以告訴應用程序關於窗口大小的變化。
對於遠程登錄這種情況,窗口大小的變化發生在客户端,而運行在服務器端的應用程序需要知道窗口大小變化。所以Rlogin的客户需要採用某些方法來通知服務器窗口大小變化的情況以及新窗口的大小。
服務器到客户的命令
我們介紹通過TCP連接,Rlogin服務器進程可以發送給客户進程的4條命令。問題是隻有一條TCP連接可供使用,所以服務器進程必須給這些命令字節做標記,使得客户進程可以從數據流中識別出這些是命令,而不是顯示在終端上。所以我們將使用TCP的緊急方式(在20.8節中曾經介紹)。
服務器要給客户發送命令時,服務器就進入緊急方式,並且把命令放在緊急數據的最後一個字節中。當客户進程收到這個緊急方式通知時,它從連接上讀取數據並且保存起來,直到讀到命令字節(即緊急數據的最後一個字節)。這時候客户進程根據讀到的命令,再決定對於所讀到並保存起來的數據是顯示在終端上還是丟棄它。
採用TCP緊急方式發送這些命令的一個原因是第一個命令(“清倉輸出(flushoutput)”)需要立即發送給客户,即使服務器到客户的數據流被窗口流量控制所終止。這種情況下,即服務器到客户的輸出被流量控制所終止的情況是經常發生的,這是因為運行在服務器的進程的輸出速率通常大於客户終端的顯示速率。另一方面,客户到服務器的數據流很少被流量控制所終止,因為這個方向的數據流僅僅包含用户所鍵入的字符。
客户到服務器的命令
對於客户到服務器的命令,只定義了一條命令,那就是:將當前窗口大小發送給服務器。當客户的窗口大小發生變化時,客户並不立即向服務器報告,除非收到了服務器發來的0x80命令(圖26-4中有介紹)。
同樣,由於只存在一條TCP連接,客户必須對在連接上傳輸的該命令字節進行標註,使得服務器可以從數據流中識別出命令,而不是把它發送到上層的應用程序中去。處理的方法就是在兩個字節的0xff後面緊跟着發送兩個非凡的標誌字節。
對於窗口大小命令,兩個標誌字節是ASCII碼的字符‘s’。之後是4個16bit長的數據(按網絡字節順序),分別是:行數(例如,25),每列的字符數(例如,80),X方向的像素數量,Y方向的像素數量。通常情況下,後兩個16bit是0,因為在Rlogin服務器進程調用的應用程序中,通常是以字符為單位來度量屏幕的,而不是像素點。
上面我們介紹的從客户進程到服務器進程的命令採用帶內信令(in-bandsignaling),這是因為命令字節和其他的普通數據一起傳輸。選擇0xff字節來表示這個帶內信令的原因是:一般用户的操作不會產生0xff這個字節。所以説Rlogin是不完備的,假如我們採用某種方法,使得通過鍵盤就可以產生兩個連續的0xff字節,而且正好在這之前是兩個ASCII的‘s’字符,那麼下面的8個字節就會被誤認為是窗口大小了。
服務器到客户的Rlogin命令,由於大多數的API採用的技術叫做“帶外數據(out-of-banddata)”,所以我們就稱它為帶外信令(out-of-bandsignaling)。但是回憶一下在20.8節中對TCP緊急方式的討論,在那裏我們説緊急方式數據不是帶外數據,命令字節是按照普通數據流進行傳輸的,非凡之處是採用了緊急指針。
既然帶內信令被用來傳輸從客户到服務器的命令,那麼服務器進程必須檢查從客户進程收到的每個字節,看看是否有兩個連續的0xff字節。但是對於採用帶外信令的、從服務器傳輸到到客户的命令,客户進程不需要檢查收到的每個字節,除非服務器進程進入了緊急方式。即使在緊急方式下,客户進程也僅僅需要留意緊急指針所指向的字節。而且由於從客户進程到服務器的數據流量和相反方向的數據流量之比是1:20,這就暗示帶內信令適合於數據量比較小的情況(從客户到服務器),而帶外信令適合於數據量比較大的情況(從服務器到客户)。
客户的轉義符
通常情況下,我們向Rlogin客户進程鍵入的信息將傳輸到服務器進程。但是有些時候,我們並不需要把鍵入的信息傳輸到服務器,而是要和Rlogin客户進程直接通信。方法是在一行的開頭鍵入代字符(tilde)“~”,緊跟着是下列4個字符之一:
1) 以一個句號結束客户進程。
2) 以文件結束符(通常是Control_D)結束客户進程。
3) 以任務控制掛起符(通常是Control_Z)掛起客户進程。
4) 以任務控制延遲掛起符(通常是Control_Y)來掛起僅僅是客户進程的輸入。這時,不管客户運行什麼程序,鍵入的任何信息將由該程序進行解釋,但是從服務器發送到客户的信息還是輸出到終端上。這非常適合當我們需要在服務器上運行一個長時間程序的場合,我們既想知道該程序的輸出結果,同時還想在客户上運行其他程序。只有當客户進程的Unix系統支持任務控制時,後兩個命令才有效。 [1] 
參考資料