Как создать новое соединение по SSH для сервера, на котором включена функция MFA?

Как создать новое соединение по SSH для сервера, на котором включена функция MFA?

Я пытаюсь создать Azure Pipeline. Часть процесса включает создание сервисного соединения, чтобы я мог безопасно копировать файлы на удаленный сервер.

введите описание изображения здесь

У меня 2 вопроса:

  1. Что мне ввести в Service connection nameполе? Примера с кратким пояснением будет достаточно.
  2. Как создать это SSH-подключение к службе, если у меня включен MFA? В пользовательском интерфейсе нет соответствующей опции.

Я спросил об этом 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, но ssh2hostname или ServiceConnection-2-Hostname-via-sshили что-то еще, что работает для вас.
Примечание:Естьвозможноограничения относительно допустимых символов (например, без пробелов, без подстановочных знаков, без эмодзи и/или только A-Z,a-z,0-9,-_.и т. д.), но я не смог найти, задокументированы ли эти ограничения.

Необязательное описание должно допускать более длинное описание с меньшими ограничениями на ввод, чем имя соединения.

скриншот сервиса


Многофакторная аутентификация SSH — я ожидаю, что это будет простоне поддерживается.

По своей философии и замыслу MFA предназначена для остановки автоматизированных входов в систему, и я не вижу никого, кто предлагал бы точку останова для ручного ввода одноразового кода аутентификации в конвейере.

Типичным решением является создание отдельной учетной записи службы / технической учетной записи, которая не требует MFA и где достаточно аутентификации открытого ключа ssh.
Чтобы решить предполагаемые проблемы безопасности этого: используйте относительно недоиспользуемую функцию openssh и~/.ssh/authorized_keysформат файла, а именно: возможность настройки параметров/ограничений, которые будут установлены при использовании определенной пары ключей для входа в систему.

Связанный контент