共用方式為


設定符合 FIPS 規範的安全遠端 Linux 開發

Visual Studio 2017 及更新版本支援 Linux。 VISUAL Studio 2019 16.5 版和更新版本提供符合 FIPS 規範的安全遠端 Linux 開發。

美國聯邦資訊處理標準 (FIPS) 出版物 140-2 是美國政府的密碼編譯模組標準。 標準實作是由 NIST 驗證。 Windows 已 驗證 FIPS 相容密碼編譯模組的支援。 在 Visual Studio 2019 16.5 版和更新版本中,您可以使用安全且符合 FIPS 規範的密碼編譯連線到 Linux 系統進行遠端開發。

以下說明如何設定 Visual Studio 與遠端 Linux 系統之間的安全 FIPS 相容連線。 當您在 Visual Studio 中建置 CMake 或 MSBuild Linux 專案時,本指南適用。 本文是連線到遠端 Linux 計算機連線指示的 FIPS 相容版本。

準備符合 FIPS 標準的連線

您必須進行一些準備,才能使用符合 FIPS 規範的密碼編譯安全 SSH 連線,才能在 Visual Studio 與遠端 Linux 系統之間使用。 針對 FIPS-140-2 合規性,Visual Studio 僅支援 RSA 密鑰。

本文中的範例使用 Ubuntu18.04 LTS 搭配 OpenSSH 伺服器 7.6 版。 不過,對於任何使用中等最新版本 OpenSSH 的散發版本,這些指示應該相同。

在遠端系統上設定 SSH 伺服器

  1. 在 Linux 系統上,安裝並啟動 OpenSSH 伺服器:

    sudo apt install openssh-server
    sudo service ssh start
    
  2. 如果您要在 ssh 系統開機時自動啟動伺服器,請使用 systemctl啟用它:

    sudo systemctl enable ssh
    
  3. 以根身分開啟 /etc/ssh/sshd_config 。 編輯 (或新增,如果不存在的話)下列幾行:

    Ciphers aes256-cbc,aes192-cbc,aes128-cbc,3des-cbc
    HostKeyAlgorithms ssh-rsa
    KexAlgorithms diffie-hellman-group-exchange-sha256,diffie-hellman-group-exchange-sha1,diffie-hellman-group14-sha1
    MACs hmac-sha2-256,hmac-sha1
    

    注意

    ssh-rsa 是唯一符合 FIPS 規範的主機金鑰演演算法 VS 支援。 演算法 aes*-ctr 也符合 FIPS 規範,但 Visual Studio 中的實作並未獲得核准。 密鑰 ecdh-* 交換演算法符合 FIPS 標準,但 Visual Studio 不支持它們。

    您不限於這些選項。 您可以設定 ssh 為使用其他加密、主機金鑰演演算法等等。 您可能要考慮的其他相關安全性選項為 PermitRootLoginPasswordAuthenticationPermitEmptyPasswords。 如需詳細資訊,請參閱 mansshd_config SSH 伺服器組態一文的頁面。

  4. 儲存並關閉 sshd_config之後,請重新啟動 ssh 伺服器以套用新的設定:

    sudo service ssh restart
    

接下來,您將在 Windows 電腦上建立 RSA 金鑰組。 接著,您會將公鑰複製到遠端 Linux 系統以供 使用 ssh

建立及使用 RSA 金鑰檔案

  1. 在 Windows 電腦上,使用此命令產生公用/私人 RSA 金鑰組:

    ssh-keygen -t rsa -b 4096 -m PEM
    

    命令會建立公鑰和私鑰。 根據預設,金鑰會儲存至 %USERPROFILE%\.ssh\id_rsa%USERPROFILE%\\.ssh\\id_rsa.pub。 (在 PowerShell 中,使用 $env:USERPROFILE 而不是 cmd 巨集 %USERPROFILE%) 如果您變更金鑰名稱,請使用後續步驟中的已變更名稱。 建議您使用複雜密碼來提高安全性。

  2. 從 Windows 將公鑰複製到 Linux 電腦:

    scp %USERPROFILE%\.ssh\id_rsa.pub user@hostname:
    
  3. 在 Linux 系統上,將金鑰新增至授權金鑰清單,並確定檔案具有正確的許可權:

    cat ~/id_rsa.pub >> ~/.ssh/authorized_keys
    chmod 600 ~/.ssh/authorized_keys
    
  4. 現在,您可以測試以查看新金鑰是否在 中 ssh運作。 使用它從 Windows 登入:

    ssh -i %USERPROFILE%\.ssh\id_rsa user@hostname
    

您已成功設定 ssh、建立和部署加密密鑰,並測試連線。 現在您已準備好設定 Visual Studio 連線。

在 Visual Studio 中連線到遠端系統

  1. 在 [Visual Studio] 中,請從功能表列中選擇 [工具]>[選項]來開啟[選項]對話方塊。 然後選取 [跨平台 > 連線管理員] 開啟 [連線管理員] 對話方塊。

    如果您之前尚未在 Visual Studio 中設定連線,當您第一次建置專案時,Visual Studio 會為您開啟 [連線管理員] 對話方塊。

  2. 在 [連線管理員] 對話框中,選擇 [新增] 按鈕以新增連線。

    顯示 [連線管理員] 對話框中 [選項] 窗格的螢幕快照。反白顯示跨平臺 > C 加上 > 連線管理員。

    [ 連線到遠端系統 ] 視窗隨即顯示。

    顯示 [連線到遠端系統] 視窗的螢幕快照,其中包含主機名、埠、使用者名稱、驗證類型和密碼的文本框。

  3. 在 [ 連線到遠端系統] 對話框中,輸入遠端計算機的連線詳細數據。

    Entry 描述
    Host Name 目標裝置的名稱或 IP 位址
    通訊埠 正在執行 SSH 服務的連接埠,一般是 22
    使用者名稱 驗證使用者身分
    驗證類型 選擇符合 FIPS 規範連線的私鑰
    私密金鑰檔 為 SSH 連線所建立的私密金鑰檔案
    複雜密碼 與上面選取的私密金鑰搭配使用的複雜密碼

    將驗證類型變更為 私鑰。 在 [私鑰檔案] 欄位中輸入私鑰的路徑。 您可以使用 [ 瀏覽 ] 按鈕來改為瀏覽至您的私鑰檔案。 然後,在 [複雜密碼] 字段中輸入用來加密私鑰檔案 的複雜密碼

  4. 選取 [連線] 按鈕,嘗試連線到遠端電腦。

    如果連線成功,Visual Studio 會將 IntelliSense 設定為使用遠端標頭。 如需詳細資訊,請參閱適用於遠端系統標頭的 IntelliSense

    如果連線失敗,將會以紅色標出需要變更的輸入方塊。

    [連線到遠端系統] 視窗的螢幕快照,其主機名和埠文本框以紅色框起,表示需要變更。

    如需連線疑難解答的詳細資訊,請參閱 連線到遠端 Linux 計算機

連接管理員的命令行公用程式

Visual Studio 2019 16.5 版或更新版本ConnectionManager.exe 是管理 Visual Studio 外部遠端開發連線的命令行公用程式。 這適用於佈建新開發機器等工作。 或者,您可以使用它來設定 Visual Studio 以進行持續整合。 如需 ConnectionManager 命令的範例和完整參考,請參閱 ConnectionManager 參考

選擇性:啟用或停用 FIPS 模式

在 Windows 中可以全域啟用 FIPS 模式。

  1. 若要啟用 FIPS 模式,請按 Windows+R 開啟 [ 執行 ] 對話框,然後執行 gpedit.msc

  2. 展開 [ 本機計算機原則 > 計算機 > 設定] [Windows 設定 > 安全性設定 > 本機原則 ],然後選取 [安全性選項]。

  3. 在 [原則] 底下,選取 [系統密碼編譯:使用 FIPS 相容的演算法進行加密、哈希和簽署],然後按 Enter 以開啟其對話框。

  4. 在 [ 本機安全性設定] 索引標籤中,選取 [ 已啟用 ] 或 [已停用],然後選擇 [ 確定 ] 以儲存變更。

警告

啟用 FIPS 模式可能會導致某些應用程式意外中斷或行為。 如需詳細資訊,請參閱部落格文章 為什麼我們不再建議「FIPS 模式」。

其他資源

MICROSOFT FIPS 140 驗證的檔

FIPS 140-2:密碼編譯模組 的安全性需求(來自 NIST)

密碼編譯演演算法驗證程序:驗證注意事項 (來自 NIST)

Microsoft部落格文章,說明 為什麼我們不再建議「FIPS 模式」

SSH 伺服器組態

另請參閱

設定 Linux 專案
設定 Linux CMake 專案
連線到遠端 Linux 電腦
部署、執行及偵錯 Linux 專案
設定 CMake 偵錯工作階段