共用方式為


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

Visual Studio 2017 及更新版本支援 Linux。 符合 FIPS 規範的安全遠端 Linux 開發可在 Visual Studio 2019 16.5 版和更新版本中取得。

聯邦資訊處理標準 (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 金鑰。

本文中的範例使用 Ubuntu 18.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 。 如需詳細資訊,請參閱 manSSH 伺服器組態一文的頁面 sshd_config

  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 中,選擇功能表列上的 [工具 > 選項 ] 以開啟 [ 選項] 對話方塊。 然後選取[跨平臺 > Connection Manager],以開啟 [Connection Manager] 對話方塊。

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

  2. 在 [Connection Manager] 對話方塊中,選擇 [新增] 按鈕以新增連線。

    顯示 [Connection Manager] 對話方塊中 [選項] 窗格的螢幕擷取畫面。反白顯示跨平臺 > C 加號加上 > Connection Manager。

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

    顯示 [連線到遠端系統] 視窗的螢幕擷取畫面,其中包含主機名稱、埠、使用者名稱、驗證類型和密碼的文字方塊。

  3. 在 [ 連線到遠端系統 ] 對話方塊中,輸入遠端電腦的連線詳細資料。

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

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

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

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

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

    [連線到遠端系統] 視窗的螢幕擷取畫面,其中具有紅色外框的主機名稱和埠文字方塊,表示必須變更它們。

    如需連線疑難排解的詳細資訊,請參閱 連線到遠端 Linux 電腦

Connection Manager的命令列公用程式

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 模式」

其他資源

FIPS 140 驗證的 Microsoft 檔

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

密碼編譯演算法驗證程式: 從 NIST) (驗證注意事項

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

SSH 伺服器組態

另請參閱

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