設定符合 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 伺服器
在 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
或SSH 伺服器組態一文的頁面sshd_config
。儲存並關閉
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 中,選擇功能表列上的 [工具 > 選項 ] 以開啟 [ 選項] 對話方塊。 然後選取[跨平臺 > Connection Manager],以開啟 [Connection Manager] 對話方塊。
如果您之前尚未在 Visual Studio 中設定連線,當您第一次建置專案時,Visual Studio 會為您開啟 [Connection Manager] 對話方塊。
在 [Connection Manager] 對話方塊中,選擇 [新增] 按鈕以新增連線。
[ 連接到遠端系統 ] 視窗隨即顯示。
在 [ 連線到遠端系統 ] 對話方塊中,輸入遠端電腦的連線詳細資料。
進入 描述 Host Name 目標裝置的名稱或 IP 位址 通訊埠 正在執行 SSH 服務的連接埠,一般是 22 使用者名稱 驗證使用者身分 驗證類型 選擇符合 FIPS 規範連線的私密金鑰 私密金鑰檔 為 SSH 連線所建立的私密金鑰檔案 密碼 與上面選取的私密金鑰搭配使用的複雜密碼 將驗證類型變更為 私密金鑰。 在 [ 私密金鑰檔案 ] 欄位中輸入私密金鑰的路徑。 您可以使用 [ 流覽 ] 按鈕來改為流覽至私密金鑰檔案。 然後,在 [複雜密碼] 欄位中輸入用來加密私密金鑰檔案的複雜 密碼 。
選擇 [ 連線] 按鈕以嘗試連線到遠端電腦。
如果連線成功,Visual Studio 會將 IntelliSense 設定為使用遠端標頭。 如需詳細資訊,請參閱適用於遠端系統標頭的 IntelliSense。
如果連線失敗,將會以紅色標出需要變更的輸入方塊。
如需連線疑難排解的詳細資訊,請參閱 連線到遠端 Linux 電腦。
Connection Manager的命令列公用程式
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 偵錯工作階段