I have a Gitlab environment using Gitlab CI, for a new project to testify about the compiled files and copy via rsync to a production server.
The machine where the build of these resources is exec is an image of docker (node 6), but now I have to copy the resulting files from that container Docker command to the server using linux ... My problem is to connect via ssh through rsync.
Currently I have the following:
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 [email protected]
- rsync -avuz $CI_PROJECT_DIR/dist/ [email protected]:/var/wwww/example.com
only:
- master
By this I'm getting:
/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).
ssh-copy-id is asking for a password. You can use
sshpass -e
and set the SSHPASS environment variable in Gitlab.You are not passing the ssh key to rsync. You should do something like this which executes the ssh command to properly identify the ssh key: