如何修复gitlab Ci / CD中的权限被拒绝(公钥,密码)?

时间:2018-09-09 17:42:43

标签: ssh gitlab

我在.gitlab-cl.yml文件中有以下简单脚本:

build_deploy_stage:
  stage: build
  environment: Staging
  only:
    - master
  script:

    - mkdir -p ~/.ssh

    - echo "$PRIVATE_KEY" >> ~/.ssh/id_dsa
    - cat ~/.ssh/id_dsa
    - chmod 600 ~/.ssh/id_dsa
    - echo -e "Host *\n\tStrictHostKeyChecking no\n\n" > ~/.ssh/config
    - cat ~/.ssh/config
    - scp   myfile.js user@example.com:~

但是当作业运行并执行最后一行(scp命令)时出现此错误:

Warning: Permanently added 'example.com' (ECDSA) to the list of known hosts.
Permission denied, please try again.
Permission denied, please try again.
Permission denied (publickey,password).

我花了一整天,但无法解决问题。我确认$ PRIVATE_KEY存在。登录到example.com时,我生成了密钥对,将生成的私有复制到gitlab上的PRIVATE_KEY变量中。 如何解决此问题?

请注意,它是dsa密钥。

1 个答案:

答案 0 :(得分:2)

检查您对~/.ssh(700)及其中所有文件(600)的许可

例如,您的配置文件可能具有太大的默认权限。 如果可以,activate a debug session in the sshd of the remote server:您将看到是否接受了dsa密钥(对于sshd的最新版本,可能受到限制)。 rsa会更好。
seen here一样,默认情况下,OpenSSH 7.0和更高版本不再接受DSA密钥。

OP ace确认in the comments

  

我修复了重新生成tsa密钥对而不是dsa密钥的问题