<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    Sealyu

    --- 博客已遷移至: http://www.sealyu.com/blog

      BlogJava :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理 ::
      618 隨筆 :: 87 文章 :: 225 評論 :: 0 Trackbacks

    比較“安全 shell(SSH)”和“虛擬網絡計算(VNC)”

    developerWorks
    文檔選項

    未顯示需要 JavaScript 的文檔選項

    將此頁作為電子郵件發送

    將此頁作為電子郵件發送


    級別: 初級

    David Mertz,博士 (mertz@gnosis.cx), 程序員和作家, Gnosis Software,Inc.

    2001 年 12 月 01 日

    在 這兩篇文章的第一篇中,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。完成這個操作的非安全工具是 telnetrsh ,但使用這些工具會引起很多安全性問題,因此最好在所有需要通信的計算機上安裝 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 名稱連接到遠程機器
    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 連接到遠程機器
    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 名稱連接到遠程機器
    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)”影響,但是交互式 cursesslang 類應用程序通常會受影響。這些應用程序中最值得注意的是文本編輯器,它通常是您最需要在遠程控制臺上運行的應用程序。順便說一下, jed 是一種特別好的遠程文本方式編輯器;其強壯內核也許將使用 vim 。其它大多數 Linux/UNIX 編輯器不是基于 X 的就是極其粗糙的(或者是臃腫的,如 emacs )。

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


    常用遠程終端設置
    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 服務器會話
    [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 的額外信息,包括我創建的一個壓縮文檔,它也許有助于一些用戶開始學習。





    回頁首


    下一次

    在第 2 部分中,我們將研究遠程 X 和其它跨網絡運行遠程應用程序的方法,還有使用遠程應用程序時的安全性問題。



    參考資料

    SSH 參考資料

    • 您可以參閱本文在 developerWorks 全球站點上的 英文原文.

    • 商業和正式版本的 SSH 是由 SSH Communications Security 推出的。有一個可以免費用于非商業用途的版本,但它不是“自由軟件”。

    • 大多數 Linux 分發版封裝的卻是 OpenSSH 。因為許可證是從各種地方繼承的,所以它有一點復雜,但卻是“類 BSD”的。

    • 對于 Windows,我建議使用“自由(MIT 許可證)軟件”程序 PuTTY 。它很棒并且安裝也容易。

    • 對于 BeOS 和 OS/2,我建議在 BeBits.comHobbes OS/2 archive 上分別搜索。對于 MacOS,我使用過 MacSSH,但是關于 Nifty Telnet 1.1 SSH,我無法提出意見。請在 FreeSSH 網站上查看關于 MacOS 的鏈接。

    VNC 參考資料

    • 有些讀者可能希望使用 VNCviewer 的 Java 版本,但是在他們的機器上只有 Java 運行時環境,而沒有 javac 開發工具。David Mertz 已經創建了(完全未受支持)一套已編譯的字節碼 .jar.class 文件 ,歡迎您嘗試。

    其它參考資料



    關于作者

    David Mertz 的照片

    David Mertz 是個討人喜歡的人。他是計算機問題的克星。可以通過 mertz@gnosis.cx 和 David 聯系;可在 http://gnosis.cx/publish/ 上了解他的生活。歡迎提出關于本專欄過去、現在和將來的意見和建議。

    posted on 2008-07-11 23:38 seal 閱讀(161) 評論(0)  編輯  收藏 所屬分類: Linux
    主站蜘蛛池模板: 亚洲第一页在线播放| www国产亚洲精品久久久| 亚洲精品美女在线观看| 日日麻批免费40分钟无码| 亚洲av一综合av一区| a毛片全部免费播放| 亚洲AV无码成人精品区蜜桃| 久久国产精品免费看| 亚洲黄色高清视频| 67194熟妇在线永久免费观看| 亚洲国产美女精品久久| 在线天堂免费观看.WWW| 亚洲男同gay片| 亚洲A∨精品一区二区三区| 国产精品成人啪精品视频免费| 国产亚洲A∨片在线观看| 黄网站色视频免费在线观看的a站最新| 亚洲成a人片在线观看日本| 久久免费观看国产99精品| 亚洲国产精品线观看不卡| 精品免费国产一区二区三区| 黄色一级毛片免费| 久久精品亚洲综合专区| 在线观看无码AV网站永久免费| 亚洲乱码无人区卡1卡2卡3| 亚洲人成无码www久久久| 国产一级片免费看| 亚洲人成电影网站久久| 亚洲国产成人久久综合一区77| a级毛片高清免费视频| 亚洲人成人77777网站不卡| 国产伦一区二区三区免费| 色www永久免费网站| 亚洲一级毛片视频| 亚洲午夜爱爱香蕉片| 99re免费99re在线视频手机版| 亚洲成AV人影片在线观看| 久久亚洲高清观看| 精品国产免费观看久久久 | 久久大香香蕉国产免费网站 | 国精无码欧精品亚洲一区|