Product SiteDocumentation Site

9.2. 遠端登入

管理者需要遠端連結電腦。伺服器,放在固定的空間內,擁有自己的鍵盤與螢幕 — 但可以經由網路連結進來。

9.2.1. 安全遠程登入:SSH

SSH (Secure SHell) 通信協定係以安全與可靠考量。以 SSH 連線是安全的:夥伴需認證且資料交換經過加密。
SSH 有兩個檔案傳輸服務。scp 是命令列工具,用起來像是 cp,除了對方機器的路徑加上機器的前置名稱,以及冒號。
$ scp file machine:/tmp/
sftp 是互動式命令,類似 ftp。在單一程序中,sftp 可以同時傳輸多個檔案,且可以操作遠端的檔案 (刪除、重新命令、改變授權等)。
Debian 使用 OpenSSH,由 OpenBSD 計畫 (以 BSD 核心為基礎的自由作業系統,以安全性著稱) 維護的自由版本 SSH 且是芬蘭and fork of the original SSH software developed by the SSH Communications Security Corp 公司發展的 SSH 原版的分歧版本。該公司以自由軟體精神發展 SSH,但後來改變為專屬授權。OpenBSD 計畫另起爐灶發展 OpenSSH 維持 SSH 的自由軟體版本。
OpenSSH 分裂為兩個套件:客戶端是 openssh-client 套件,伺服器端是 openssh-server 套件。ssh 超套件依賴這兩個部份且需安裝它們 (apt install ssh)。

9.2.1.1. 金鑰認證

以 SSH 登入時,遠端伺服器要求密碼認證使用者。在此條件下不能自動連結,也不能經常登入 SSH。所以 SSH 提供金鑰認證系統。
使用者以 ssh-keygen -t rsa 命令產生與客戶端機器搭配的金鑰;公鑰儲存在 ~/.ssh/id_rsa.pub,對應的私鑰則儲存在 ~/.ssh/id_rsa。使用者以 ssh-copy-id server 命令將其公鑰加入伺服器的 ~/.ssh/authorized_keys 檔案內。若在產生時,以 “passphrase” 保護私鑰,後續登入伺服器則不需要密碼。否則必須每次鍵入 passphrase 解碼才能使用私鑰。幸運的是,ssh-agent 允許把私鑰儲存在記憶體內,所以不必重複鍵入密碼。在此情況下,以 ssh-add (於每個程序做一次) 命令將該程序與 ssh-agent 命令連結。Debian 預設在圖形介面啟用它,但可以改變 /etc/X11/Xsession.options 檔案內的選項而停用。在控制臺程序裡,可以 eval $(ssh-agent) 手動啟動它。

9.2.1.2. 使用遠端 X11 應用程式

SSH 通信協定可以使用圖形資料 (“X11” 程序,取材自 Unix 常用的圖形系統之名);伺服器開啟專用通道給該等資料。特別的是,遠端執行圖形的問題可以顯示在本地螢幕的 X.org 伺服器,整個程序 (輸入與顯示) 是安全的。因為此功能允許遠端應用程式與在地系統互動,預設是不行的。指明 X11Forwarding yes 於伺服器的組態檔 (/etc/ssh/sshd_config) 內。最後,使用者必須加入 -X 選項於 ssh 命令列。

9.2.1.3. 新增埠映射的加密通道

它的 -R-L 選項允許 ssh 在兩個機器間新增 “加密通道”,把在地 TCP 埠 (見專欄 基本 TCP/UDP) 映射至遠端機器或反之。
ssh -L 8000:server:25 intermediary中介 主機建立 SSH 程序並聽在地埠 8000 (見 圖形 9.3, “以 SSH 轉送在地埠”)。建立在這個埠的任何連結,ssh 將從 中介 電腦建立連結至 伺服器 的埠號 25,而且把兩個連結綁在一起。
ssh -R 8000:server:25 intermediary 也建立一個 SSH 程序至 中介 電腦,但在該機器以 ssh 聆聽埠號 8000 (見 圖形 9.4, “以 SSH 轉送遠端埠”)。建立在該埠的連結將啟動 ssh 開啟本地機器埠號 25 的 伺服器,而且把兩個連結綁在一起。
這兩個案例裡,都連結至 伺服器 主機的埠號 25,以 SSH 通道連結在地機器與 中介 機器。在第一個案例裡,在 “公共” 網路裡,入口是在地埠 8000,資料移向 中介 機器後再流向 伺服器。在第二個案例裡,入口與出口的通道相反;入口是 中介 機器的埠號 8000,出口是在地主機,且資料直接流向 伺服器。實務上,伺服器是在地機器或中介機器。SSH 保證兩者的安全連結。
以 SSH 轉送在地埠

圖形 9.3. 以 SSH 轉送在地埠

以 SSH 轉送遠端埠

圖形 9.4. 以 SSH 轉送遠端埠

9.2.2. 使用遠端圖形桌面

虛擬網路計算 (Virtual Network Computing, VNC) 可以近用遠端圖形桌面。
此工具常使用在技術支援;管理者可以看到使用者面對的錯誤,不必到現場就能告知正確的運作。
首先,使用者必須授權共享其程序。在 Jessie 組態面版 (不同於稍早的 Debian 版本,使用者必須安裝並執行 vino) 的GNOME 圖形桌面環境已有此選項。KDE 桌面環境仍需使用 krfb 才能經由 VNC 共享既有的程序。其他皂圖形桌面環境,x11vnc 命令 (在同名的 Debian 套件內) 也能達到同樣的結果;以明確的圖示標明。
從 VNC 取得圖形程序時,管理者必須連結至 VNC 客戶端。GNOME 有 vinagreremmina 命令連結,而 KDE 使用 krdc (在 KInternetRemote Desktop Client 選單內)。還有使用命令列的其他 VNC 客戶端,諸如 xvnc4viewer 在 Debian 的同名套件內。連結後,管理者可以看到遠端的桌面、操控遠端桌面、並讓遠端使用者知道運作的方式。
VNC 也可供移動使用者、或公司執行者使用,這些人偶而需要從家中的電腦遠端登入辦公室的桌面電腦。這種組態稍為複雜些:首先安裝 vnc4server 套件,改變顯示管理者的組態,以便接受 XDMCP Query 請求 (給 gdm3,新增 Enable=true/etc/gdm3/daemon.conf 的 “xdmcp” 區塊),然後以 inetd 啟動 VNC 伺服器,接著在使用者試圖登入時,自動開啟程序。例如,可以在 /etc/inetd.conf 內加入這一列:
5950  stream  tcp  nowait  nobody.tty  /usr/bin/Xvnc Xvnc -inetd -query localhost -once -geometry 1024x768 -depth 16 securitytypes=none
重新定向輸入連結至顯示管理者,解決認證的問題,因為祗有在地帳號的使用者才能通過 gdm3 登入畫面 (或同級的 kdmxdm等)。當此作業允許同時登入多個使用者 (伺服器夠力是前提),就能夠提供完整的桌面給遠端使用者 (或稍為不夠力的桌面系統,則需要組態為精簡客戶)。使用祗需以 vncviewer server:50 登入伺服器畫面,因為用到的埠號是 5950。