設定符合 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 伺服器
在 Linux 系統上,安裝並啟動 OpenSSH 伺服器:
sudo apt install openssh-server sudo service ssh start
如果您要在
ssh
系統開機時自動啟動伺服器,請使用systemctl
啟用它:sudo systemctl enable ssh
以根身分開啟
/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
為使用其他加密、主機金鑰演演算法等等。 您可能要考慮的其他相關安全性選項為PermitRootLogin
、PasswordAuthentication
與PermitEmptyPasswords
。 如需詳細資訊,請參閱man
或sshd_config
SSH 伺服器組態一文的頁面。儲存並關閉
sshd_config
之後,請重新啟動 ssh 伺服器以套用新的設定:sudo service ssh restart
接下來,您將在 Windows 電腦上建立 RSA 金鑰組。 接著,您會將公鑰複製到遠端 Linux 系統以供 使用 ssh
。
建立及使用 RSA 金鑰檔案
在 Windows 電腦上,使用此命令產生公用/私人 RSA 金鑰組:
ssh-keygen -t rsa -b 4096 -m PEM
命令會建立公鑰和私鑰。 根據預設,金鑰會儲存至
%USERPROFILE%\.ssh\id_rsa
和%USERPROFILE%\\.ssh\\id_rsa.pub
。 (在 PowerShell 中,使用$env:USERPROFILE
而不是 cmd 巨集%USERPROFILE%
) 如果您變更金鑰名稱,請使用後續步驟中的已變更名稱。 建議您使用複雜密碼來提高安全性。從 Windows 將公鑰複製到 Linux 電腦:
scp %USERPROFILE%\.ssh\id_rsa.pub user@hostname:
在 Linux 系統上,將金鑰新增至授權金鑰清單,並確定檔案具有正確的許可權:
cat ~/id_rsa.pub >> ~/.ssh/authorized_keys chmod 600 ~/.ssh/authorized_keys
現在,您可以測試以查看新金鑰是否在 中
ssh
運作。 使用它從 Windows 登入:ssh -i %USERPROFILE%\.ssh\id_rsa user@hostname
您已成功設定 ssh
、建立和部署加密密鑰,並測試連線。 現在您已準備好設定 Visual Studio 連線。
在 Visual Studio 中連線到遠端系統
在 [Visual Studio] 中,請從功能表列中選擇 [工具]>[選項]來開啟[選項]對話方塊。 然後選取 [跨平台 > 連線管理員] 開啟 [連線管理員] 對話方塊。
如果您之前尚未在 Visual Studio 中設定連線,當您第一次建置專案時,Visual Studio 會為您開啟 [連線管理員] 對話方塊。
在 [連線管理員] 對話框中,選擇 [新增] 按鈕以新增連線。
[ 連線到遠端系統 ] 視窗隨即顯示。
在 [ 連線到遠端系統] 對話框中,輸入遠端計算機的連線詳細數據。
Entry 描述 Host Name 目標裝置的名稱或 IP 位址 通訊埠 正在執行 SSH 服務的連接埠,一般是 22 使用者名稱 驗證使用者身分 驗證類型 選擇符合 FIPS 規範連線的私鑰 私密金鑰檔 為 SSH 連線所建立的私密金鑰檔案 複雜密碼 與上面選取的私密金鑰搭配使用的複雜密碼 將驗證類型變更為 私鑰。 在 [私鑰檔案] 欄位中輸入私鑰的路徑。 您可以使用 [ 瀏覽 ] 按鈕來改為瀏覽至您的私鑰檔案。 然後,在 [複雜密碼] 字段中輸入用來加密私鑰檔案 的複雜密碼 。
選取 [連線] 按鈕,嘗試連線到遠端電腦。
如果連線成功,Visual Studio 會將 IntelliSense 設定為使用遠端標頭。 如需詳細資訊,請參閱適用於遠端系統標頭的 IntelliSense。
如果連線失敗,將會以紅色標出需要變更的輸入方塊。
如需連線疑難解答的詳細資訊,請參閱 連線到遠端 Linux 計算機。
連接管理員的命令行公用程式
Visual Studio 2019 16.5 版或更新版本:ConnectionManager.exe
是管理 Visual Studio 外部遠端開發連線的命令行公用程式。 這適用於佈建新開發機器等工作。 或者,您可以使用它來設定 Visual Studio 以進行持續整合。 如需 ConnectionManager 命令的範例和完整參考,請參閱 ConnectionManager 參考。
選擇性:啟用或停用 FIPS 模式
在 Windows 中可以全域啟用 FIPS 模式。
若要啟用 FIPS 模式,請按 Windows+R 開啟 [ 執行 ] 對話框,然後執行
gpedit.msc
。展開 [ 本機計算機原則 > 計算機 > 設定] [Windows 設定 > 安全性設定 > 本機原則 ],然後選取 [安全性選項]。
在 [原則] 底下,選取 [系統密碼編譯:使用 FIPS 相容的演算法進行加密、哈希和簽署],然後按 Enter 以開啟其對話框。
在 [ 本機安全性設定] 索引標籤中,選取 [ 已啟用 ] 或 [已停用],然後選擇 [ 確定 ] 以儲存變更。
警告
啟用 FIPS 模式可能會導致某些應用程式意外中斷或行為。 如需詳細資訊,請參閱部落格文章 為什麼我們不再建議「FIPS 模式」。
其他資源
FIPS 140-2:密碼編譯模組 的安全性需求(來自 NIST)
密碼編譯演演算法驗證程序:驗證注意事項 (來自 NIST)
Microsoft部落格文章,說明 為什麼我們不再建議「FIPS 模式」
另請參閱
設定 Linux 專案
設定 Linux CMake 專案
連線到遠端 Linux 電腦
部署、執行及偵錯 Linux 專案
設定 CMake 偵錯工作階段