SSH-ключ незащищенный терраформируемый анализируемый Дженкинс

# #ssh #ansible #gitlab #terraform

Вопрос:

У меня есть репозиторий gitlab, который содержит мой код ansible и terraform для расширения моей инфраструктуры. (CI/CD) Я сохранил ключи ssh в своей gitlab. Когда мой агент Дженкинса проверяет ssh-соединение, оно отлично работает. Однако, когда он запускает команду «ansible-playbook», соединение не может быть установлено из-за этой ошибки:

 > [0m[1google_compute_instance.instance
> (remote-exec):[0m [0mConnecting to remote host via SSH...
> [0m[1google_compute_instance.instance
> (remote-exec):[0m [0m  Host: ip address
> [0m[1.google_compute_instance.instance
> (remote-exec):[0m [0m  User: devops
> [0m[1google_compute_instance.instance
> (remote-exec):[0m [0m  Password: false
> [0m[1google_compute_instance.instance
> (remote-exec):[0m [0m  Private key: true
> [0m[1google_compute_instance.instance
> (remote-exec):[0m [0m  Certificate: false
> [0m[1google_compute_instance.instance
> (remote-exec):[0m [0m  SSH Agent: false
> [0m[1google_compute_instance.instance
> (remote-exec):[0m [0m  Checking Host Key: false
> [0m[1google_compute_instance.instance
> (remote-exec):[0m [0m  Target Platform: unix
> [0m[1google_compute_instance.instance
> (remote-exec):[0m [0mConnected!

[0m[1google_compute_instance.instance (local-exec):[0m [0mfatal:  UNREACHABLE! => {"changed": false, "msg": "Failed to connect to the host via ssh: Warning: Permanently added  (ED25519) to the list of known hosts.rn@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@rn@         WARNING: UNPROTECTED PRIVATE KEY FILE!          @rn@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@rnPermissions 0644 for Ansible/lab_ssh_key' are too open.rnIt is required that your private key files are NOT accessible by others.rnThis private key will be ignored.rnLoad key "/var/jenkins_home/workspace/Ansible/lab_ssh_key": bad permissionsrn Permission denied (publickey).", "unreachable": true}

[0m[1google_compute_instance.instance (local-exec):[0m [0mPLAY RECAP *********************************************************************
[0m[1google_compute_instance.instance (local-exec):[0m [0m              : ok=0    changed=0    unreachable=1    failed=0    skipped=0    rescued=0    ignored=0
 

Я не нашел способа защитить свой закрытый ключ в gitlab. Я попытался изменить его разрешения с помощью chmod, но после этого я не смог загрузить его на gitlab.
Какие-нибудь решения или другие мысли по этому поводу ?
Заранее спасибо.

Комментарии:

1. Как вы вводите SSH — ключ в сборку CI?

2.Чтобы расширить вышесказанное, ключ SSH, вероятно, следует хранить где-нибудь в качестве учетных данных (внутри Jenkins, хранилища и т. Д.), А затем извлекать с помощью привязок плагинов Jenkins. Затем вы можете внедрить его в Ansible и легко терраформировать в коде конвейера Дженкинса. Кроме того, если вы выполняете Ansible внутри конфигурации Terraform, а не в конвейере, то вам, вероятно, будет проще сделать это в a null_resource , а не в a provisioner remote-exec .

3. Мой ключ хранится в моем репозитории в виде файла. Спасибо за ваш ответ, я попробую.

Ответ №1:

Решение, которое сработало для меня, заключается в следующем:

  • Я хранил ключ в Дженкинсе. (раздел «Полномочия»)
  • Затем я извлек его из файла Дженкинса с помощью команды «withcredentials». После этого я продолжаю копировать ключ в свою gitlab.