歡迎您光臨本站 註冊首頁

在Linux系統的網路上共享計算機

←手機掃碼閱讀     火星人 @ 2014-03-23 , reply:0

  比較「安全 shell(SSH)」和「虛擬網路計算(VNC)」 在這兩篇文章的第一篇中,David 比較和對照了「安全 shell(SSH)」和「虛擬網路計算(VNC)」,這兩種技術允許用戶在一台工作站上運行位於另一台計算機上的應用程序。(他沒有涉及文件和列印共享或諸如 httpd、ftpd、smtp 或 nntpd 之類的「網際網路」服務,雖然這些技術也可以有效地「共享」上述計算機中的某些資源。)然而,他確實給出了 SSH 和 VNC 的安裝和配置的提示,並評論了工具的穩定性、選項和許可證狀況。

  為有效地測試各種軟體程序和撰寫關於它們的文章,我在自己的本地網路上配備了大量計算機。這些機器運行各種操作系統並使用各種硬體配置。有時我會在各種平台上評測工具;而有時候會測試和調試自己編寫的工具。

  我網路上的大多數機器都以多重引導配置的方式安裝了多種操作系統,但也有一些是「無頭的」(無監視器或鍵盤)。雖然多重引導裝入器適於容納多種操作系統,但由於只在一台機器上進行測試,重新引導的時間開銷使得多平台的詳細比較測試花費了更多時間。多重引導不太利於「並排」比較。我沒有評測過任何讓您在一個系統內「虛擬」另一個系統的工具,譬如 VMWare、Plex86、VirtualPC、SheepShaver 或者其它工具。在某些方面,這些工具實現了我將在本文中討論的那些工具的用途。

  有幾種不同的技術允許用戶在一台工作站上運行位於另一台計算機上的應用程序。SSH 提供到遠程計算機的文本終端;可以使用「X Window 系統」在一些工作站上顯示互動式應用程序,而這些應用程序實際上運行在另一台工作站上;VNC 可以作為對於整個遠程桌面的「遠程控制」。每種技術都有優點和缺點。它們都在 Linux 上運行,但不同變體(主機或遠程)允許與其它各種 OS 環境(用於異構網路)進行交互。使用這些工具的組合,我可以坐在一台工作站(具有最好的監視器、鍵盤和椅子的那一台)前,運行、測試並對多個平台上(通常不用重新引導任何系統)的應用程序進行計時。

  我的網路設置

  我的本地網路上有七個節點,命名為 Apollo、Bacchus、Chaos、Delphi、Echo、Fury 和 Gaia。分別為這些節點分配了從 192.168.1.101 到 192.168.1.107 的 IP 地址。大多數情況下,同一物理機器在多重引導到不同操作系統時總是獲得相同 IP 地址(但有時我使用 DHCP,它分配 192.168.1.200 以上的地址)。整個網路位於一個硬體防火牆/路由器后,我充分信任防火牆,對於運行在本地機器上的服務,我也許並沒有象應有的那樣過分猜疑。(需要在網際網路上共享計算機的讀者應該比我更擔心安全性問題。這兩篇文章中的第二部分加入一些關於安全性問題的討論。)

  我提及了上面的大部分細節,以便您可以遵循我在下面給出的一些 shell 示例。我實際操作的機器是 Bacchus,它的本地 IP 地址是 192.168.1.102。

  安全 shell(ssh)

  最節省帶寬的連接計算機方法是通過簡單文本 shell。完成這個操作的非安全工具是 telnet 和 rsh,但使用這些工具會引起很多安全性問題,因此最好在所有需要通信的計算機上安裝 ssh。儘管下面的一些示例在我的防火牆之內使用了 telnet,但這種折衷辦法也是以下事實的產物 — 「Fury」目前專用於安裝和重新安裝測試操作系統。預設情況下,許多類 UNIX 操作系統(包括最新的 Linux 分發版(distribution))將安裝 ssh;如果沒有安裝,請參閱本文後面的參考資料來安裝它。

  安全 shell(ssh)對通過特定通道的所有信息流都進行加密。因為使用了公鑰(public-key)加密,所以,伺服器和客戶機不必在會話開始(initiation)之前共享密鑰。此外,機密不會在通道中以未加密格式傳輸(譬如,使用 telnet 傳輸登錄密碼則任何攔截器都可以截獲它)。其它協議 — 例如 VNC 或 X Window — 可以位於 ssh 頂部,但是這些協議最簡單的用途是用於創建遠程文本控制台。

  使用 ssh,可以輕易地連接到與本地機器運行不同操作系統的機器上。唯一的要求是,遠程機器運行 sshd 伺服器,而本地機器要有 ssh 客戶機。例如,要從運行 OS/2 Warp 的「Bacchus」機器連接到隔壁運行 Slackware Linux 的「Delphi」機器,就象下列清單一樣簡單:

  使用 ssh 通過 HOSTS 名稱連接到遠程機器
QUOTE:
C:\UTILS % ssh quilty@delphi
Last login: Thu Nov 29 01:41:36 2001 from 192.168.1.102
  Linux 2.2.19.
  quilty@delphi:~$ exit
  logout
  Connection to delphi closed.

  如果我的 HOSTS 文件未定義別名,可以使用:

  使用 ssh 通過 IP 連接到遠程機器
QUOTE:
C:\UTILS % ssh quilty@192.168.1.104
Last login: Thu Nov 29 01:51:31 2001 from 192.168.1.102
  Linux 2.2.19.
  quilty@delphi:~$

  同樣地,我經常通過使用下列命令跨越國界,在全世界管理我租用的 Web 伺服器:使用 ssh 通過 DNS 名稱連接到遠程機器
QUOTE:
C:\UTILS % ssh gnosis@gnosis.cx
gnosis@gnosis.cx's password:

  對於異構平台上的 ssh 來說,最困難的事情是正確地獲得終端配置。實際上,這個問題並不是 ssh 本身的問題(telnet 也有同類的問題)。將兩台 Linux 機器連接在一起幾乎總是能無縫地工作。但是將安裝其它平台的機器作為客戶機或伺服器時,顯示總是不太正確,或者鍵綁定不象預期的那樣工作。當涉及「非類 UNIX」平台諸如 Win32、BeOS、MacOS 和 OS/2 時,問題似乎尤其嚴重,但即使將 FreeBSD 與 Linux 連接也有缺點。

  當在異構機器之間創建 ssh 連接時最典型的問題是代碼頁錯誤,或者色彩轉義碼錯誤。當任何一種情況發生時,基本命令行可用,但是線條(line-draw)字元顯示成其它東西;經常只能看到單色終端而不是彩色的。shell 命令不大受這種「阻抗失諧(impedance mismatch)」影響,但是互動式 curses 或 slang 類應用程序通常會受影響。這些應用程序中最值得注意的是文本編輯器,它通常是您最需要在遠程控制台上運行的應用程序。順便說一下, jed 是一種特別好的遠程文本方式編輯器;其強壯內核也許將使用 vim。其它大多數 Linux/UNIX 編輯器不是基於 X 的就是極其粗糙的(或者是臃腫的,如 emacs)。

  如果您遇到終端配置問題,就需要做幾件事。如果您是在連接到類 UNIX sshd 伺服器時出問題,請嘗試更改遠程 TERM 環境變數。例如:

  常用遠程終端設置:
QUOTE:
quilty@delphi:~$ TERM=vt100
  quilty@delphi:~$ TERM=ansi
  quilty@delphi:~$ TERM=linux

  同時,本地 ssh 客戶機通常會有辦法來配置連接的終端類型。它可能是命令行選項、環境變數或菜單對話框,這取決於平台和客戶機程序。您在連接的兩端不應該使用完全相同的名稱。要反覆進行試驗。還應該檢查以確保在客戶機配置內使用了「無代碼頁轉化」。要測試「阻抗匹配(impedance match)」,則嘗試運行一個全屏遠程應用程序(例如 jed 或者另一個編輯器)。

  虛擬網路計算(Virtual Network Computing(VNC))

  VNC 是一種已經移植到許多 GUI 平台上的客戶機/伺服器系統。VNC 提供一種在本地系統上顯示遠程計算機整個「桌面」的輕量型協議。Symantec 的 pcAnywhere 是一種具有類似用途的商業產品,但是它僅限於 Microsoft 操作系統。相反,VNC 才真正可以在許多不同的操作系統上運行,並有多種實現和變體。

  獲得對 VNC 的感性認識的一個好方法是看它網站上的抓屏(請參閱參考資料)。可能的組合比那裡顯示的多得多,但是顯示的多個變體表明了多數。通常, 任何具有 VNC 客戶機(通常稱為 vncviewer)的平台可以在本地窗口內顯示任何具有 VNC 伺服器(vncviewer)的平台的虛擬桌面。調整大小和全屏選項也許可用,這取決於 VNC 客戶機的版本。

  VNC 伺服器的基於 X 的版本(Xvnc)和用於其它平台的版本之間有一點差異。單用戶系統諸如 Windows、MacOS、BeOS 和 OS/2 不具備「X Window 系統」所擁有的「桌面會話」概念。因此,例如 Windows VNC 伺服器所顯示的只是出現在與本地系統上的同一個 Windows 桌面的遠程版本;當連接時這稱為「桌面:0」。相反,X Window 是多用戶和多會話的。每個 Xvnc 會話創建一個全新的桌面,可能有它自己的解析度、窗口管理器和狀態。換言之,X 對 VNC 的支持要好得多。

  一旦安裝了 VNC 伺服器,啟動會話很簡單而且安裝也很容易;請參閱參考資料。對於單用戶平台,由於基本上只運行應用程序,所以沒有選項(第一次您將需要設置一些許可權)。在 X 下,一些命令行選項會有幫助。例如,我已經連接了一個從本地 OS/2 Warp「Bacchus」機器到 Mandrake Linux「Fury」機器的 telnet 會話,如下所示:

  在 Fury 上啟動 VNC 伺服器會話
QUOTE:
[root@fury quilty]# cat /usr/bin/vnc-sessions
  vncserver -name TinyLinux -depth 8 -geometry 640x480
  vncserver -name BigLinux -depth 32 -geometry 1260x940
  [root@fury quilty]# vnc-sessions
  
  New 'TinyLinux' desktop is fury.gnosis.lan:1
  
  Starting applications specified in /root/.vnc/xstartup
  Log file is /root/.vnc/fury.gnosis.lan:1.log
  
  
  New 'BigLinux' desktop is fury.gnosis.lan:2
  
  Starting applications specified in /root/.vnc/xstartup
  Log file is /root/.vnc/fury.gnosis.lan:2.log

  現在,我可以從客戶端使用本地 vncviewer 連接到 Fury:1 或者 Fury:2(或者同時連接兩者)。如果願意,也可以顯式地指定 192.168.1.106:1。相同的的原則也適用於非本地網路,並且出於安全性目的,VNC 可以配置成隧道通過 SSH。

  大多數情況下,具有一個到遠程計算機的 vncviewer 連接,在功能上和坐在該遠程計算機的本地監視器和鍵盤前面一樣(假定它不是「無頭的」)。從美學角度來看,將通過一個使用本地機器的小窗口(widget)的窗口來構造遠程系統的桌面(除非使用全屏選項)。最初這些額外的框架可能會分散一些注意力,但是使用了一段時間后,就很容易忽略它們了。

  選擇適當的會話圖形解析度和色深很重要(假定您正在使用 Xvnc 伺服器,就會有一個選項;或者在其它 vncserver 平台上,您希望將遠程計算機的本地顯示設定為適合自己的 VNC 需要的解析度)。遠程桌面解析度越小,使用的色彩越少,則顯示響應就越快。這樣,屏幕資源對於許多應用程序來說是理想的。我發現減少色深對響應速度的影響比較小;VNC 的十六進位編碼比簡單的「象素到象素」屏幕傳輸的效率高得多。但是屏幕大小出現了明顯差異。

  通常,我發現使用諸如 1260x940 以上的遠程圖形解析度和本地 1280x1024 視頻設置配合的非常好。我只留了一點額外空間以放置 VNC 標題欄和本地桌面任務欄。但是 vncviewer 窗口依然佔用著幾乎整個屏幕,這很漂亮。在 100 Mbit 乙太網連接的情況下,這種連接幾乎絲毫不遜於本地顯示。在 10 Mbit 乙太網上,當移動和縮放窗口時,可以看到輕微的延遲。在速度更慢的情況下,VNC 往往不是遠程操作的最佳解決方案。電纜、DSL 或者 T1 連接仍然可用,但不是無縫的。任何比這些連接更慢的連接實際上只能用於緊急情況。

  VNC 連接的一個問題是本地桌面出於自己的用途需要使用一些擊鍵。許多遠程擊鍵可能必須使用組合擊鍵操作來模仿,這取決於特定客戶機。例如,我的本地 OS/2 vncviewer 需要按 Alt-A, F, Alt-A 來輸入遠程 Alt-F。這些額外的敲擊有時對於打字員來說難以適應。在非 PC 平台(例如 Mac)下情況更為複雜,因為它們有自己的鍵盤和(單鍵)滑鼠。還有很多東西要學習和輸入,但是通常會有一個方法來模仿所有遠程輸入動作。但是,Linux 到 Linux 連接工作得十分平穩。通常只有少數組合鍵沒有直接傳遞到遠程會話,這取決於連接兩端所用的特定窗口管理器。

  一個值得注目的 VNC 實現是 Java 版。有許多本機版本可用,即使那些沒有本機 vncviewer 的平台也可以使用 Java 版(假定存在用於該平台的 JVM)。VNC-java 可以在 Web 瀏覽器內運行,Web 瀏覽器提供了建立連接的常見界面。但是 Java 查看器也可以作為 Java 應用程序在瀏覽器外部運行。下面的參考資料提供了一些關於 VNC-java 的額外信息,包括我創建的一個壓縮文檔,它也許有助於一些用戶開始學習。

[火星人 ] 在Linux系統的網路上共享計算機已經有599次圍觀

http://coctec.com/docs/linux/show-post-130814.html