Gitlab CI - Triển khai qua SSH đến máy chủ từ xa


12

Tôi có môi trường Gitlab bằng Gitlab CI, cho một dự án mới để làm chứng về các tệp đã biên dịch và sao chép qua rsync đến máy chủ sản xuất.

Máy mà việc xây dựng các tài nguyên này được thực thi là hình ảnh của docker (nút 6), nhưng bây giờ tôi phải sao chép các tệp kết quả từ lệnh Docker container đó sang máy chủ bằng linux ... Vấn đề của tôi là kết nối qua ssh thông qua rsync.

Hiện tại tôi có những điều sau đây:

stages:
  - deploy

before_script:
    - npm i
    - npm run build

job_deploy:
  stage: deploy
  script:
    - ssh-keygen -t rsa -b 4096 -C '' -f ~/.ssh/deploy_rsa
    - ssh-keyscan -H 8.8.8.8 >> ~/.ssh/known_hosts
    - ssh-copy-id -i ~/.ssh/deploy_rsa.pub $SERVER_USER@8.8.8.8
    - rsync -avuz $CI_PROJECT_DIR/dist/ $SERVER_USER@8.8.8.8:/var/wwww/example.com
  only:
    - master

Bằng cách này, tôi nhận được:

    /usr/bin/ssh-copy-id: INFO: attempting to log in with the new key(s), to filter out any that are already installed
    /usr/bin/ssh-copy-id: INFO: 1 key(s) remain to be installed -- if you are prompted now it is to install the new keys
    Permission denied, please try again.
    Permission denied, please try again.
    Permission denied (publickey,password).

3
Cái gì đó của tôi không được nhấn mạnh ở đây: bạn đang tạo một khóa ssh mới khi mọi công trình không hoạt động? Đâu là điểm sử dụng ssh leys whrn you.need pwd để triển khai khóa pub?
lrkwz

Giống như @lrkwz, tôi cũng thiếu điểm gửi khóa mới trên mỗi bản dựng, khi nào bạn sẽ được yêu cầu nhập mật khẩu. Ngoài ra, tôi rất muốn xem tệp ủy quyền trên máy chủ từ xa ...
Fábio Duque Silva

Câu trả lời:


3

ssh-copy-id đang yêu cầu nhập mật khẩu. Bạn có thể sử dụng sshpass -evà đặt biến môi trường SSHPASS trong Gitlab.


Bạn có thể thêm một ví dụ không?
Yashu Găngal

1

Bạn không chuyển khóa ssh cho rsync. Bạn nên làm một cái gì đó như thế này để thực thi lệnh ssh để xác định đúng khóa ssh:

rsync -avuz -e 'ssh -i ~/.ssh/deploy_rsa' $CI_PROJECT_DIR/dist/ $SERVER_USER@8.8.8.8:/var/wwww/example.com
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.