我在.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密钥。
答案 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密钥。
我修复了重新生成tsa密钥对而不是dsa密钥的问题