
我正在嘗試創建一個天藍色的管道。這個過程的一部分涉及創建服務連接,以便我可以安全地將文件複製到遠端伺服器。
我有兩個問題:
- 我在田裡放什麼
Service connection name
?一個有簡短解釋的例子就足夠了。 - 如果啟用了 MFA,如何建立此 SSH 服務連線? UI 上沒有與此相關的選項。
我向ChatGPT詢問了此事,但我不知道是否正確。
如果您在遠端電腦上啟用了 MFA(多重驗證),則需要使用與傳統密碼或私鑰不同的驗證方法。一種選擇是使用安全性令牌,它是由身份驗證器應用程式(例如 Microsoft Authenticator)產生的基於時間的程式碼,並與密碼結合使用進行身份驗證。
若要在 Azure Pipeline SSH 任務中使用安全性令牌,則需要為任務配置新增一個附加參數。以下是如何使用安全令牌配置 SSH 任務的範例
- task: SSH@0
inputs:
sshEndpoint: '<your SSH service connection name>'
runOptions: 'ssh -o StrictHostKeyChecking=no'
command: 'ls -l'
arguments: '-la /home'
sshPublicKey: '<your public key>'
sshPassphrase: '<your passphrase>'
sshExtraOptions: '-o IdentitiesOnly=yes'
useAgentAuth: false
sshPassword: '<your password>'
sshSecurityToken: '<your security token>'
在此範例中,該
sshSecurityToken
參數用於指定用於身份驗證的安全性令牌。您還需要在設定中包含您的公鑰、密碼(如果適用)和密碼(如果適用)。
它是否正確?如果是,我如何實際實現涉及安全令牌的這部分身份驗證?任何形式的幫助將不勝感激。
答案1
服務 connection name
根據手冊是:
必需的。用於引用任務屬性中的服務連線的名稱。它不是你的 Azure 帳戶或訂閱的名稱。如果使用 YAML,請在腳本中使用該名稱作為 azureSubscription 或等效的訂閱名稱值。
換句話說:將用於標識此連接的強制標籤名稱/標籤。幾乎任何對你有意義的事情都應該有效。此範例使用MyArmSubsciption
, but ssh2hostname
或ServiceConnection-2-Hostname-via-ssh
或任何適合您的內容。
筆記:有可能關於允許哪些字元的限制(例如沒有空格,沒有通配符,沒有表情符號和/或只有A-Z,a-z,0-9,-_.
等等),但我找不到這些限制是否有記錄。
可選描述應該允許比連接名稱更冗長的描述和更少的輸入限制。
SSH 多重身份驗證 - 我希望這很簡單不支援。
從理念和設計上來說,MFA 旨在阻止自動登錄,而且我沒有看到任何人為在管道中手動輸入一次性身份驗證代碼提供斷點。
典型的解決方法是設定一個單獨的服務帳戶/技術帳戶,不需要 MFA,並且僅 ssh 公鑰身份驗證就足夠了。
為了解決已知的安全性問題:使用 openssh 的相對未充分利用的功能以及~/.ssh/authorized_keys
文件格式 - 即:配置使用特定金鑰對登入時將設定的選項/限制的能力。