Bagaimana cara menghasilkan kunci SSH untuk proyek yang di-hosting gitlab.com?

0

Saya memiliki proyek yang di-host sebagai repositori pribadi di gitlab.com. Saya ingin menggunakan gitlab ci / cd untuk secara otomatis menyebarkan proyek saya ke server jarak jauh QA_SERVER ketika kode didorong ke cabang utama. Di bawah ini adalah konten .gitlab-ci.yml sejauh ini:

image: ubuntu:latest
stages:
  - deploy
deploy_QA:
  stage: deploy
  environment: 
    name: Staging
    url: "$QA_URL"
  before_script:
  - 'which ssh-agent || ( apt-get update -y && apt-get install openssh-client -y )'
  - mkdir -p ~/.ssh
  - eval $(ssh-agent -s)
  - '[[ -f /.dockerenv ]] && echo -e "Host *\n\tStrictHostKeyChecking no\n\n" > ~/.ssh/config'
  script:
    - ssh-add <(echo "$PRIVATE_KEY")
    - ssh -o StrictHostKeyChecking=no user@"$QA_SERVER" 'rm -rf /var/www/html/*'
    - scp -P22 -r . ubuntu@"$QA_SERVER":/var/www/html

Saya perlu membuat kunci pribadi dan menyimpan sebagai variabel PRIVATE_KEY dalam proyek gitlab. Bagaimana cara menghasilkan kunci ini? Apakah saya perlu menjalankan ssh-keygen dan di mana saya menjalankannya?

Perhatikan bahwa instruksi diberikan

sini

tidak jelas bagi saya.

pengguna61766
sumber

Jawaban:

1

Tautan yang Anda berikan memberikan semua informasi. Selangkah demi selangkah:

  1. Di mesin lokal Anda berjalan ssh-keygen.
    • Sangat penting bahwa Anda tidak melindungi kunci Anda dengan kata sandi - jika tidak, kunci tersebut tidak dapat digunakan dalam skrip non-interaktif.
    • Mungkin bijaksana untuk menggunakan jalur file non-standar untuk kunci. Mari kita asumsikan ~/.ssh/ubuntu_rsa. Nama spesifik tidak masalah.
  2. Sebagai hasil dari pembuatan kunci, Anda akan memiliki 2 file di lokasi yang ditentukan: ubuntu_rsa dan ubuntu_rsa.pub . Untuk alasan keamanan, pastikan ubuntu_rsa hanya dapat diakses oleh Anda (mis. chmod 600 ~/.ssh/ubuntu_rsa)
  3. Anda memerlukan akses ke akun pada QA_SERVER yang akan digunakan oleh pekerjaan CI dan harus dapat diakses melalui ssh - dari skrip Saya menganggap ubuntu -nya
  4. Gunakan ssh-copy-iduntuk menambahkan kunci publik untuk QA_SERVER untuk ubuntu : ssh-copy-id -i ~/.ssh/ubuntu_rsa.pub ubuntu@QA_SERVER. Anda akan dimintai kata sandi akun ubuntu .
  5. Tambahkan variabel gitlab di proyek Anda - lihat dokumen . Mari kita asumsikan namanya SSH_PRIVATE_KEY dan sebagai nilai yang ditetapkan konten dari ~/.ssh/id_rsamesin lokal Anda.
  6. skrip di gitlab-ci.yml Anda harus memiliki sesuatu seperti:
SRC_DIR=. # replace with whatever is needed here
echo $SSH_PRIVATE_KEY | ssh-add
scp -r $SRC_DIR ubuntu@QA_SERVER:/var/www/html
lkorbel
sumber