
Ich versuche, eine Azure-Pipeline zu erstellen. Teil des Prozesses ist das Erstellen einer Dienstverbindung, damit ich Dateien sicher auf den Remote-Server kopieren kann.
Ich habe 2 Fragen:
- Was gebe ich in das
Service connection name
Feld ein? Ein Beispiel mit einer kurzen Erklärung genügt. - Wie erstelle ich diese SSH-Dienstverbindung, wenn ich MFA aktiviert habe? Auf der Benutzeroberfläche gibt es diesbezüglich keine Option.
Ich habe ChatGPT danach gefragt, weiß aber nicht, ob es stimmt.
Wenn Sie MFA (Multi-Faktor-Authentifizierung) auf Ihrem Remote-Computer aktiviert haben, müssen Sie eine andere Authentifizierungsmethode als ein herkömmliches Passwort oder einen privaten Schlüssel verwenden. Eine Möglichkeit besteht darin, ein Sicherheitstoken zu verwenden. Dabei handelt es sich um einen zeitbasierten Code, der von einer Authentifizierungs-App (z. B. Microsoft Authenticator) generiert und in Verbindung mit Ihrem Passwort zur Authentifizierung verwendet wird.
Um ein Sicherheitstoken in Ihrer Azure Pipeline-SSH-Aufgabe zu verwenden, müssen Sie der Aufgabenkonfiguration einen zusätzlichen Parameter hinzufügen. Hier ist ein Beispiel, wie Sie eine SSH-Aufgabe mit einem Sicherheitstoken konfigurieren können.
- 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>'
In diesem Beispiel
sshSecurityToken
wird der Parameter verwendet, um das Sicherheitstoken anzugeben, das für die Authentifizierung verwendet werden soll. Sie müssen außerdem Ihren öffentlichen Schlüssel, Ihre Passphrase (falls zutreffend) und Ihr Passwort (falls zutreffend) in die Konfiguration aufnehmen.
Ist das richtig? Wenn ja, wie implementiere ich diesen Teil der Authentifizierung mit Sicherheitstoken? Für jede Art von Hilfe wäre ich dankbar.
Antwort1
Der Service connection name
gemäßdas HandbuchIst:
Erforderlich. Der Name, der zum Verweisen auf die Dienstverbindung in den Aufgabeneigenschaften verwendet wird. Dies ist nicht der Name Ihres Azure-Kontos oder -Abonnements. Wenn Sie YAML verwenden, verwenden Sie den Namen als „azureSubscription“ oder den entsprechenden Abonnementnamenwert im Skript.
Mit anderen Worten: ein obligatorischer Bezeichnungsname/eine Bezeichnung, die zur Identifizierung dieser Verbindung verwendet wird. Fast alles, was für Sie Sinn macht, sollte funktionieren. Das Beispiel verwendet MyArmSubsciption
, aber ssh2hostname
oder ServiceConnection-2-Hostname-via-ssh
oder was auch immer für Sie funktioniert.
Notiz:Es gibtmöglicherweiseEinschränkungen hinsichtlich der zulässigen Zeichen (z. B. keine Leerzeichen, keine Platzhalterzeichen, keine Emojis und/oder nur A-Z,a-z,0-9,-_.
usw.), aber ich konnte nicht herausfinden, ob diese Beschränkungen dokumentiert sind.
Die optionale Beschreibung sollte eine ausführlichere Beschreibung mit weniger Eingabebeschränkungen als der Verbindungsname ermöglichen.
SSH Multi-Faktor-Authentifizierung - ich erwarte, dass das einfach istnicht unterstützt.
Der Philosophie und dem Design nach soll MFA automatisierte Anmeldungen verhindern, und ich sehe niemanden, der einen Haltepunkt für die manuelle Eingabe eines einmaligen Authentifizierungscodes in einer Pipeline anbietet.
Eine typische Problemumgehung besteht darin, ein separates Servicekonto / technisches Konto einzurichten, das keine MFA erfordert und bei dem die Authentifizierung mit öffentlichem SSH-Schlüssel allein ausreicht.
Um wahrgenommene Sicherheitsprobleme zu lösen: Verwenden Sie die relativ wenig genutzte Funktion von OpenSSH und die~/.ssh/authorized_keys
Dateiformat – nämlich: die Möglichkeit, Optionen/Einschränkungen zu konfigurieren, die festgelegt werden, wenn ein bestimmtes Schlüsselpaar zur Anmeldung verwendet wird.