2017-06-05 19 views
4

私は自分のプロジェクト用にCDをセットアップしようとしています。私のGitlab CIランナーと私のプロジェクトは同じサーバー上にあります。私はhttps://docs.gitlab.com/ee/ci/examples/deployment/composer-npm-deploy.htmlに従ってきましたが、私はSSH Permission denied (publickey,password).エラーが発生し続ける。すべての私の変数、秘密鍵およびその他の変数は、プロジェクト設定で正しく設定されています。Gitlab CI-SSH許可が拒否されました(公開鍵、パスワード)

ssh-keygen -t rsa -C "[email protected]" -b 4096コマンドでパスフレーズを使用せずに自分のsshキーを作成し、~/.ssh/id_rsaという内容の変数をPRODUCTION_PRIVATE_KEYに設定しました。

これは私のgitlab-ci.ymlです:

stages: 
    - deploy 

deploy_production: 
    stage: deploy 
    image: tetraweb/php 
    before_script: 
    - 'which ssh-agent || (apt-get update -y && apt-get install openssh-client -y)' 
    - eval $(ssh-agent -s) 
    - ssh-add <(echo "$PRODUCTION_PRIVATE_KEY") 
    - mkdir -p ~/.ssh 
    - echo -e "Host *\n\tStrictHostKeyChecking no\n\n" > ~/.ssh/config 
    - apt-get install rsync 
    script: 
    - ssh $PRODUCTION_SERV[email protected]$PRODUCTION_SERVER 
    - hostname 
    only: 
    - master 

そして、これはGitlab CIランナーから出力されます。事前に

Running with gitlab-ci-multi-runner 9.2.0 (adfc387) 
    on ci-test (1eada8d0) 
Using Docker executor with image tetraweb/php ... 
Using docker image sha256:17692e06e6d33d8a421441bbe9adfda5b65c94831c6e64d7e69197e0b51833f8 for predefined container... 
Pulling docker image tetraweb/php ... 
Using docker image tetraweb/php ID=sha256:474f639dc349f36716fb98b193e6bae771f048cecc9320a270123ac2966b98c6 for build container... 
Running on runner-1eada8d0-project-3287351-concurrent-0 via lamp-512mb-ams2-01... 
Fetching changes... 
HEAD is now at dfdb499 Update .gitlab-ci.yml 
Checking out dfdb4992 as master... 
Skipping Git submodules setup 
$ which ssh-agent || (apt-get update -y && apt-get install openssh-client -y) 
/usr/bin/ssh-agent 
$ eval $(ssh-agent -s) 
Agent pid 12 
$ ssh-add <(echo "$PRODUCTION_PRIVATE_KEY") 
Identity added: /dev/fd/63 (rsa w/o comment) 
$ mkdir -p ~/.ssh 
$ echo -e "Host *\n\tStrictHostKeyChecking no\n\n" > ~/.ssh/config 
$ apt-get install rsync 
Reading package lists... 
Building dependency tree... 
Reading state information... 
rsync is already the newest version. 
0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded. 
$ ssh [email protected]$PRODUCTION_SERVER 
Pseudo-terminal will not be allocated because stdin is not a terminal. 
Warning: Permanently added '{MY_SERVER_IP}' (ECDSA) to the list of known hosts. 
Permission denied, please try again. 
Permission denied, please try again. 
Permission denied (publickey,password). 
ERROR: Job failed: exit code 1 

感謝。

+2

パブリックキーを認証キーとして認識されるようにサーバーに追加する必要があります。 – Jakuje

+0

私はgitlab.comのgitlabを使用しています。この場合、サーバーではgitlab.comという意味ですか?私はすでに自分のアカウントに公開鍵を追加しています。 gitlab-ci.ymlで公開鍵を追加する必要がありますか?もしそうなら、どうですか?返信btwありがとう。 – kursat

+0

いいえ、私は '$ PRODUCTION_SERVER'について話しています。 – Jakuje

答えて

4

パブリックキーを認証キーとして認識されるようにサーバーに追加する必要があります。これは、使用している秘密鍵に対応する公開鍵の内容を~/.ssh/authorized_keysに貼り付け、$PRODUCTION_SERVERに貼り付けます。

+0

ありがとう、これはxDを引っ張って1時間ほど後に私を救った – Horse

関連する問題