
Azure パイプラインを作成しようとしています。プロセスの一部には、リモート サーバーにファイルを安全にコピーできるようにサービス接続を作成することが含まれます。
質問が2つあります:
- フィールドに何を入力すればよいですか
Service connection name
? 簡単な説明付きの例で十分です。 - MFA が有効になっている場合、この SSH サービス接続を作成するにはどうすればよいですか? UI にはこれに関連するオプションはありません。
ChatGPTに問い合わせたのですが、正しいかどうかわかりません。
リモート マシンで MFA (多要素認証) が有効になっている場合は、従来のパスワードや秘密キーとは異なる認証方法を使用する必要があります。 1 つのオプションは、セキュリティ トークンを使用することです。セキュリティ トークンは、認証アプリ (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
が、 ssh2hostname
やServiceConnection-2-Hostname-via-ssh
など、自分に合ったものを使用してください。
注記:があるおそらく許可される文字に関する制限 (たとえば、スペース、ワイルドカード文字、絵文字、および/または のみA-Z,a-z,0-9,-_.
など) がありますが、それらの制限が文書化されているかどうかはわかりませんでした。
オプションの説明では、接続名よりも入力制限が少なく、より長い説明を許可する必要があります。
SSH多要素認証 - 私はそれが単純にサポートされていません。
哲学と設計上、MFA は自動ログインを阻止することを目的としており、パイプラインでワンタイム認証コードを手動で入力するためのブレークポイントを提供する人は誰もいません。
一般的な回避策は、MFAを必要とせず、SSH公開鍵認証だけで十分な別のサービスアカウント/技術アカウントを設定することです。
そのセキュリティ上の問題に対処するには、比較的使用されていないopensshの機能と~/.ssh/authorized_keys
ファイル形式 - つまり、特定のキーペアを使用してログインするときに設定されるオプション/制限を構成する機能。