注意
本文所參考的 CentOS 是一種 Linux 發行版,且將到達生命周期結束(EOL)。 請據以考慮您的使用和規劃。 如需詳細資訊,請參閱 CentOS 生命週期結束指引。
適用於: .NET Core 2.1、.NET Core 3.1、.NET 5
此部分的目標
此訓練的這個部分適用於沒有任何Linux體驗的使用者。 其中涵蓋下列主題:
如何使用 Windows Azure 建立 Linux 虛擬機。
注意
如果您已經有要用於定型的Linux虛擬機,則可以略過此步驟。
如何從 Windows 電腦連線到 Linux 虛擬機。
如何在Linux中工作時管理基本工作,例如建立和刪除檔案和資料夾、以特殊許可權使用者身分執行命令,以及使用套件管理員安裝應用程式。
為了確保本指南中的所有實驗室如預期般運作,建議您使用Ubuntu18.04 LTS散發套件,因為這是用來建立實驗室的散發套件。
此部份 (1.1) 包含下列步驟:
如果您熟悉 Linux,您可能想要完全略過此元件,並直接移至 第 1.2 部分 - Linux 特殊目錄、提升許可權的使用者和套件管理員。
在 Windows Azure 中建立 Linux 虛擬機
您的第一個決策是您想要使用的Linux散發套件。 Linux 作業系統有不同的類型和發行版,通常稱為「散發版本」。 根據此 Linux 文件專案文章,不同發行版之間有許多相似之處。 雖然安裝套件管理員可能不同,但此系列中使用的命令幾乎與每個 Linux 散發版本相同。 不過,不論使用的散發版本為何,一般指示都會相同。
注意
如 Azure 中的 Linux 虛擬機所述,Microsoft Azure 支援 我們合作夥伴所提供的數個熱門 Linux 發行版。 您可以在 Azure Marketplace 中找到 Red Hat Enterprise、CentOS、SUSE Linux Enterprise、Debian、Ubuntu、CoreOS、RancherOS、FreeBSD 等散發套件。
如需在 Azure 中建立 Linux 虛擬機的指示,請參閱快速入門:在 Azure 入口網站 中建立 Linux 虛擬機。
注意
本文也有連線到虛擬機並安裝 Nginx Web 伺服器的指示。 您可以選擇遵循這些指示並安裝 Nginx。 不過,您不需要決定,因為下一個部分涵蓋 Nginx 安裝和組態。
本教學課程不會複製這些步驟,因為指示已足夠清楚。 不過,請務必強調有關如何建立虛擬機的一些重點。
驗證
您可以在建立虛擬機器時,從下列類型的驗證中選擇:
- 使用密碼進行連線
- 使用 SSH 公鑰進行連線
雖然在此定型的內容中可以使用密碼驗證,但建議您使用 SSH 公鑰 選項,因為它可提供更佳的安全性。 此外,當您連線到 Linux 虛擬機時,本指南預設會使用此選項。
Azure 會自動為您產生 SSH 金鑰組,並可讓您將它儲存到磁碟,以便稍後在連線到 Linux 虛擬機時使用它。 此動作可簡化連線程式。
當您建立系統管理員帳戶時, 請選取 [SSH 公鑰 ] 和 [產生新的金鑰組 ] 選項。
針對 [ 用戶 名稱] 字段,您可以選擇您在建立虛擬機時提供的名稱之間想要的名稱。
輸入連接埠規則
若要啟用對新建立虛擬機的連線,請針對輸入埠規則選取SSH和 HTTP。 這是因為您將使用 SSH 通訊協定來連線到虛擬機,而且當您存取 Linux 上執行的 ASP.NET Core 應用程式時,將會使用 HTTP 通訊協定。
儲存私鑰
因為已選取 [SSK 公鑰] 選項,因此當您建立虛擬機時,您會看到下列訊息:
產生新的金鑰組
選取 [ 下載私鑰] 並建立資源,然後將私鑰儲存至本機磁碟。 檔案的擴展名為 .pem (Privacy-Enhanced Mail)。
注意
當您連線到 Linux 虛擬機時,您可以使用私鑰來開啟您的門。 因此,您不應該與其他人員共用此金鑰。
判斷IP位址
建立虛擬機之後,請移至資源頁面,並判斷並記下虛擬機的公用IP位址。 您將使用此IP位址來連線到虛擬機。
注意
建議您使用靜態 IP 位址,因為您可能需要在測試期間重新啟動電腦。 使用動態公用IP會導致重新啟動虛擬機之後,將另一個IP位址配置給虛擬機。
線上到 Linux 虛擬機
既然您有 Linux 虛擬機,而且知道其 IP 位址,您也擁有使用 SSH 公鑰驗證進行驗證的私鑰,而且您可以登入。 您最好能討論連線到Linux虛擬機時會遇到的一些術語。
您將不會使用 GUI 來連線和管理 Linux 虛擬機。 相反地,您將使用終端機來連線,並使用殼層來執行命令。
UNIX 終端機
“終端機”一詞基於早期計算機型號,這些模型佔據了整個房間,並通過打卡機和後來的鍵盤控制在實體終端機。 目前,終端機是實體終端的軟體表示法。 例如,PuTTY 是終端機。
UNIX 殼層
UNIX 殼層是用戶與類似 UNIX 作業系統之間的介面。 一旦該使用者登入系統,使用者就會在殼層中。 殼層提供命令行解釋器 (CLI),可讀取和執行命令和腳本來控制系統,然後顯示產生的輸出。
殼層也稱為「命令行」或「終端機」,這些詞彙是可互換的。 殼層提供一些命令和程式設計語言,可供您用來撰寫腳本。 有數個不同的殼層實作。 包括流行的Bash。
本文涵蓋下列連線選項:
- 使用 PowerShell SSH 終端機
- 使用 PuTTy SSH 終端機
使用 PowerShell SSH 終端機進行連線
如果您在 Windows 10 版本 1809 或更新版本上執行,您可以使用內建的 PowerShell SSH 用戶端。 若要連線到虛擬機,請開啟 PowerShell,然後以下列格式執行 SSH 命令:
ssh -i <path to .pem private key file> <user>@<host>
例如:
ssh -i d:\Learn\Linux\myPrivateKey.pem <UserName>@127.0.0.1
如果您之前從未連線到此伺服器,您會收到下列警告訊息:
無法建立主機 『<HostName>』 的真實性。
如果您輸入 是,您會收到下列更多警告:
基本上,SSH 用戶端希望私鑰「更私人」。 換句話說,.pem 檔案中包含的私鑰可供您要連線之電腦上的其他使用者存取。 預期只有初始化 Linux 虛擬機連線的使用者才能存取私鑰。
若要修正此問題,請變更該私鑰檔案的許可權。 若要這樣做,請遵循下列步驟:
找出並以滑鼠右鍵按下私鑰檔案,選取 [內容],然後選取 [ 安全性] 索引標籤。在此範例中,您會看到繼承自 資料夾的下列許可權。
在此範例中 ,您只想讓 SYSTEM 群組和您的帳戶能夠存取此檔案。 因為許可權繼承自 資料夾,因此您必須先停用該繼承,才能編輯許可權。 選取 [ 進階],然後選取 [ 停用繼承]。 下列問題會提示您:
目前繼承的許可權有何用途?
選取 [ 將繼承的許可權轉換為此對象的明確許可權]。
拿掉所有群組,但 SYSTEM,然後新增您自己的帳戶。 以下是為私鑰授與的最終許可權。
再次嘗試使用相同的 SSH 命令進行連線。 此時,應該建立連線,而不會發生任何錯誤。
使用 PuTTY 進行連線
PuTTY 是連線到 Linux 虛擬機的熱門終端機之一。 您可以在用戶端電腦上自由下載並安裝 適用於 Windows 的 PuTTY。
PuTTY 很容易使用。 不過,請記住,PuTTY 不接受私鑰的 PEM 格式。 因此,您必須將金鑰轉換成 PuTTY 預期會看到的格式(PPK)。 幸運的是,轉換 PEM 格式也很容易,因為 PuTTY 金鑰產生器 (PuTTYgen) 會與終端機軟體一起安裝。
若要轉換檔案,請遵循下列步驟:
啟動 PuTTYgen,並確定 已選取 RSA 作為要產生的密鑰類型。
選取 [載入 ] 以選取擴展名為 .pem 的私鑰檔案。
確定 已選取 [所有檔案 ],因為 PuTTYgen 的預設選取專案是 PPK。
找出並開啟所需的 PEM 檔案。 您應該會看到下列訊息,指出 PuTTYgen 能夠匯入密鑰。 現在,您可以使用 PPK 格式儲存私鑰。
選取 [ 確定],然後選取 [ 儲存私鑰]:
PuTTYgen 會提示您確定您想要在沒有複雜密碼的情況下儲存密鑰。 選取 [ 是],並以 PPK 格式儲存私鑰。
現在,您已準備好使用 PPK 檔案連線到虛擬機。
啟動 PuTTY。 您將使用相同的 <username>@<host |線上資訊的 IP 位址> 格式。 您可以儲存此工作階段資訊,以供稍後重複使用。 下列螢幕快照顯示儲存目前會話之後的 [PuTTY 組態 ] 對話方塊。 對話框會顯示 username>@<host 中的<主機資訊 |從可用的清單中選取IP位址>格式和會話名稱之後。
因為您使用 SSH 公鑰驗證,您必須告訴 PuTTY 在哪裡尋找私鑰。 若要這樣做,請展開 [SSH],然後在 [類別] 窗格中選取 [驗證],然後選取 [流覽]。
找出並選取您使用 PuTTYgen 建立的 PPK 檔案。
選取 [ 開啟 ] 以啟動工作階段。
注意
當您第一次連線到虛擬機時,會收到下列警告訊息:
伺服器的主機金鑰不會在登錄中快取。 您不保證伺服器是您所認為的電腦。
此訊息類似於您在PowerShell中使用SSH用戶端連線到虛擬機時第一次產生的訊息。
選取 [ 是 ] 以連線到虛擬機。
注意
您將使用PowerShell SSH 連線到虛擬機,以取得這些教學課程的其餘部分。
下一步
協力廠商資訊免責聲明
本文提及的協力廠商產品是由與 Microsoft 無關的獨立廠商所製造。 Microsoft 不以默示或其他方式,提供與這些產品的效能或可靠性有關的擔保。