Rod*_*eno 12 ssh deployment continuous-integration gitlab
我有一个使用 Gitlab CI 的 Gitlab 环境,用于一个新项目来证明编译的文件并通过 rsync 复制到生产服务器。
这些资源的构建是 exec 的机器是 docker(节点 6)的映像,但现在我必须使用 linux 将结果文件从该容器 Docker 命令复制到服务器......我的问题是通过 ssh 连接同步。
目前我有以下几点:
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
Run Code Online (Sandbox Code Playgroud)
通过这个我得到:
/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).
Run Code Online (Sandbox Code Playgroud)
小智 1
您没有将 ssh 密钥传递给 rsync。您应该执行类似这样的操作来执行 ssh 命令以正确识别 ssh 密钥:
rsync -avuz -e 'ssh -i ~/.ssh/deploy_rsa' $CI_PROJECT_DIR/dist/ $SERVER_USER@8.8.8.8:/var/wwww/example.com
Run Code Online (Sandbox Code Playgroud)