2017-07-25 16 views
0

私は同様の質問を見ましたが、答えはまだ見つかりませんでした。Repoはクローン化されません、 "Permission Denied"、gitモジュールを使用

サーバ(Ubuntu 16.04)にSSH接続して、私のgit repoを手動でクローンすることができます。 SSHForwardAgentの問題ではないと私は信じています。

誤差はかなり一般的です:

"Cloning into bare repository '/home/deploy/apps/MYPROJECT/production/cached-copy'...", 
"Permission denied (publickey).", 
"fatal: Could not read from remote repository.", 

ansible.cnf:

[ssh_connection] 
ssh_args = -o ForwardAgent=yes 

役割は次のようになります。

- name: Update the bare Git repository 
    become_user: "{{ deploy_user }}" 
    git: 
    repo: "[email protected]:MYUSER/MYPROJECT.git" 
    dest: "{{ deploy_to }}/cached-copy" 
    version: "{{ branch }}" 
    bare: yes 
    update: yes 
    accept_hostkey: yes 
    ssh_opts: "-o StrictHostKeyChecking=no -o ForwardAgent=yes" 

Ansibleからの冗長出力は次のようになります。

"changed": false, 
"cmd": "/usr/bin/git clone --bare '' /home/deploy/apps/MYPROJECT/production/cached-copy", 
"failed": true, 
"invocation": { 
"module_args": { 
"accept_hostkey": true, 
"bare": true, 
"clone": true, 
"depth": null, 
"dest": "/home/deploy/apps/MYPROJECT/production/cached-copy", 
"executable": null, 
"force": false, 
"key_file": null, 
"recursive": true, 
"reference": null, 
"refspec": null, 
"remote": "origin", 
"repo": "[email protected]:MYUSER/MYPROJECT.git", 
"ssh_opts": "-o StrictHostKeyChecking=no -o ForwardAgent=yes", 
"track_submodules": false, 
"umask": null, 
"update": true, 
"verify_commit": false, 
"version": "master" 

MYUSERとMYPROJECTの使用は、そのような情報を取り消すことです。

疑問に思うものは、cmdレポURLが含まれていません。これは正常ですか?

-o ForwardAgent=yes-Aに変更すると、別のエラー:Timeout (12s) waiting for privilege escalation promptが返されます。

また、サーバーにsshを接続して、ssh -T [email protected]を実行すると「あなたは正常に認証されましたが、GitHubはシェルアクセスを提供していません。

私はサーバーに秘密鍵をインストールしたくありません。

更新:ここでは詳細な出力の要旨です:https://gist.github.com/krisleech/8bfbf817c237258a672b3b3393fea8dd

一方、これが正常に動作するようです:

- name: "Test github" 
    command: ssh -T [email protected] 
+0

「become_user:{{deploy_user}}」は何のためですか?あなたのリモートユーザとは違いますか(あなたはssh接続を行います)?この場合、あなたのsshエージェントソケットは、別のユーザになるとアクセスできなくなる可能性があります。 –

+0

私は 'admin'と' deploy'ユーザを持っています。管理ユーザはsudoできます、 'deploy'ユーザはできません。私はこの行を削除しようとしましたが効果はありません。私はどちらかのユーザーとしてsshを使用してレポをクローンすることができます。 – Kris

+0

'become'オプションでタスクを呼びますか(このタスクに対して実行されたsshコマンドの出力' -vvv')? Sshエージェントはどちらのユーザーとしてもログインすると動作しますが、ログイン後に 'sudo'を実行すると動作しなくなります。 –

答えて

3

私がいることがわかり、あなたの詳細出力から:

  • 最初は、あなたが、その後、Ansibleタスク(gitのモジュール)
を実行するための deployあなたsudoを adminユーザーとリモートボックスにsshと ForwardAgent=yes
  • これはコメントで説明したシナリオです。sudo(通常の設定で)を実行すると、sshエージェントへのアクセスを効果的に無効にすることができます。

    、この作業を行うには、次のいずれかが(admin->deployとしていない)deploy直接ユーザーにsshをする必要がある、または環境変数を維持できるように、あなたの先ボックスの設定sudo、詳細についてはthis answerを参照してください。

    Add Defaults env_keep+=SSH_AUTH_SOCK to sudoers

  • 0

    repoパラメータのためのプロトコルが欠落しています。 ansible-docから:

    # Example git checkout from Ansible Playbooks 
        - git: 
        repo: git://foosball.example.org/path/to/repo.git 
        dest: /srv/checkout 
    

    repoパラメータにgit:またはssh:を追加してみてください。

    +0

    私は 'ssh://'と 'https://'の両方を試しましたが、残念なことに同じエラーです。そして、 'git://'はgithubのオプションではありません。とにかく良いキャッチ。 – Kris

    +0

    また、2FAを有効にしているので、 'http://'に何らかのトークンが必要です。 – Kris

    +0

    ところで、 'git clone git://[email protected]:krisleech/mos.git'をサーバ上で実行すると、'致命的:リモートリポジトリから読み込めませんでした。 – Kris

    関連する問題