質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

ただいまの
回答率

90.83%

  • Ubuntu

    1201questions

    Ubuntuは、Debian GNU/Linuxを基盤としたフリーのオペレーティングシステムです。

  • BitBucket

    153questions

    BitBucketは無料のリポジトリ管理ホスティングサービスです。 MercurialとGitのVCSに対応しています。プライベートリポジトリを、制限なく作成することが可能です。

  • Ansible

    140questions

    Ansibleは、Python で書かれたサーバーの設定を管理するための 構成管理ツールです。

bitbucketの公開について。

解決済

回答 3

投稿

  • 評価
  • クリップ 0
  • VIEW 132

mizutama72

score 19

bitbucketを使いソース管理をし、macのローカルから、ansibleを使用してubuntuサーバにプログラムを更新しています。

現在は、リポジトリを公開にして、ansibleを実行しているのですが、リポジトリを非公開のままで、ansibleを実行することはできないのでしょうか?

現在は非公開のままでansibleを行うと、以下のエラーになります。

TASK: [git repo=git@bitbucket.org:xxxxxxxxx/xxxxxxxxx.git dest=/xxx/xxx/xxxxxxx key_file=/home/xxxxxxx/.ssh/deploy.key ssh_opts="-o StrictHostKeyChecking=no" update=yes force=yes
] ***
failed: [xxxxxxxxxx_vm1] => {"cmd": "/usr/bin/git ls-remote origin -h refs/heads/master", "failed": true, "rc": 128}
stderr: repository access denied. deployment key is not associated with the requested repository.
fatal: Could not read from remote repository.

Please make sure you have the correct access rights
and the repository exists.

msg: repository access denied. deployment key is not associated with the requested repository.
fatal: Could not read from remote repository.

Please make sure you have the correct access rights
and the repository exists.

FATAL: all hosts have already failed -- aborting

公開にしておくと、外部からソースがすべて見ることができてしまうので、ansibleを実行するときだけ、公開にし、通常は非公開にしております。

macのローカルからは、リポジトリが非公開のままでも、git pushなどはできます。

同じような方法で使用している方がいらっしゃいましたら、ご教授ください。

  • 気になる質問をクリップする

    クリップした質問は、後からいつでもマイページで確認できます。

    またクリップした質問に回答があった際、通知やメールを受け取ることができます。

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

質問への追記・修正、ベストアンサー選択の依頼

  • CHERRY

    2018/04/28 21:37 編集

    mac のローカルで、うまくいっているのは、mac のローカルの鍵の登録などをされたのでしょうか? サーバー側の ssh 公開鍵は、どうなっていますか?

    キャンセル

  • mizutama72

    2018/04/29 09:35 編集

    前任者が行ったので正確にはわかりませんが、bitbucketの設定画面のAccessKeysには、ssh-rsaで始まる鍵?が登録されていました。ただし1つだけでしたので、これがmacの鍵で、サーバのssh公開鍵を登録すればいい、ということでしょうか?

    キャンセル

回答 3

+1

Mac ローカルから 非公開リポジトリに git の push は、可能ということは、Mac の ssh 公開鍵は、Bitbucket に登録されているのですね。

思いつく方法としては、下記でしょうか。


方法1) Mac の ssh 鍵を ssh-agent で共有して、利用する方法。

1.ansible.cfg に 下記のように設定して、ssh で ssh-agent を使うようにする。既に ssh_args に他の設定が記載されていた場合は、-o ForwardAgent=yes を追記してください。

[ssh_connection]
ssh_args = -o ForwardAgent=yes


2.サーバー側にログインして、~/.ssh/config を設定する。
内容は、 bitbucket.org のサーバーに git ユーザーで、ssh-agent の鍵を利用して接続するように設定する。

Host bitbucket
  HostName bitbucket.org
  User git
  ForwardAgent yes

3.Mac で、eval "$(ssh-agent)" を実行して、ssh-agent が、起動しているか確認する。 下記の例のようにAgent pid 数字と表示されたら起動しているので OK 

実行例

$  eval "$(ssh-agent)"
Agent pid 43589

4.ssh-add -K を使って Macローカルの秘密鍵を ssh-agent に登録する。(キーファイル名を省略するとデフォルトの鍵が利用される。)

実行例

$ ssh-add -K キーファイル名 
Enter passphrase for /Users/MyName/.ssh/id_rsa: パスワード入力
Identity added: /Users/MyName/.ssh/id_rsa (/Users/MyName/.ssh/id_rsa)

5.ssh-add -l で、 Macローカルの秘密鍵が登録されたか確認する。 下記の例のように鍵のファイル名(/Users/MyName/.ssh/id_rsa)が表示されたら OKです。(SHA256:に続く英数字は鍵ごとに異なります。)

実行例 

$ ssh-add -l
2048 SHA256:E6w2Qdhj4EcX/aQcUZny0vmFX5KwgK4XMeJ5wyMcP6Q /Users/MyName/.ssh/id_rsa (RSA)

5.通常通り ansible 実行すると ssh-agent 経由して、Mac ローカルのssh鍵が、リモートの ssh に共有されて、Mac の ssh 鍵で接続することができるのではないかと思います。


方法2)

1.サーバーの実行ユーザにログインして、ssh 鍵を作成する。
2.作成したssh公開鍵を Bitbucket のリポジトリの Access keys に登録する。
3.サーバーのユーザーから git で、butbucket に接続して、clone できることを確認する。
4.通常通り ansible 実行する。

投稿

編集

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2018/04/29 17:22

    回答ありがとうございます。

    方法1)の3までは順調にできたのですが、4のところでmacの環境では、/Users/xxxxxx/.ssh/ 配下には、id_rsaは存在せず、known_hostsというファイルがありました。
    known_hostsというファイルには、ホスト名と鍵の組み合わせがいくつかのっているようでした。
    ssh-add -Kとファイル名を指定せずにやってみましたが、特に何も起きず、ssh-add -lを実行すると、「The agent has no identities.」となってしまいました。
    鍵の生成は、私の環境ではssh-keygenでは、秘密鍵と公開鍵のセットができるようですが、これとは話が違いますか?

    方法2)ですが、
    サーバの/home/xxxxxxx/.sshの配下には、authorized_keysというファイルがあり、中をみると、ssh-rsaで始まる鍵のようだったので、これをAccess keysに登録しました。
    サーバのユーザから、git clone git@bitbucket.org:xxxxxxx/xxxxxxx.git
    と実行してみましたが、以下のエラーになってしまいました。
    ---------------------------------
    Warning: Permanently added 'bitbucket.org,xxx.xxx.xxx.x' (RSA) to the list of known hosts.
    Permission denied (publickey).
    fatal: Could not read from remote repository.

    Please make sure you have the correct access rights
    and the repository exists.
    ---------------------------------

    詳しく教えてくださったのに、なんだか申し訳ありません。
    この先で何か方法がありましたら、ご教授頂けると助かります。

    キャンセル

  • 2018/04/29 18:54

    方法1) の方ですが、
    Mac の .ssh/ ディレクトリに id_rsa 以外のファイル名で、 「ファイル名」と「ファイル名.pub」という組み合わせのファイルはありますか?
    なければ、お使いの Mac では、ssh 鍵ペアが、作成されてないようですので、ssh-keygen を実行することで、 ssh の鍵ペアが生成する必要があります。
    その後で、ssh-add -K を実行して、ssh の鍵を ssh-agent に登録してください。

    ----

    方法2)の方ですが、
    authorized_keys は、そのサーバに接続を許可する ssh公開鍵の一覧です。対になる ssh秘密鍵を持っているパソコンからサーバにログインを許可するための設定です。
    authorized_keys に記載されている内容を Bitbucket の Access keys に登録しても秘密鍵がない場合は、「Permission denied (publickey).」と言われます。

    こちらも id_rsa や id_rsa.pub がないのであれば、ssh-keygen で、 ssh 鍵ペアを作成する必要があります。作成した id_rsa.pub のファイルの中の 鍵を Bitbucket の Access keys に登録します。

    キャンセル

  • 2018/05/01 13:26

    通知が届かず、ご連絡が遅くなり申し訳ありません。

    引き続きやってみました。
    方法1)
    「ファイル名」と「ファイル名.pub」という組み合わせが違うディレクトリにあった為、それをssh-add -K で登録し、ssh-add -lで登録を確認後、実行してみました。

    結果は以下の通りで、やはりエラーでした。
    ※ansibleを実行する際にパスフレーズを聞かれなくなりました。
    -------------------------------------------------------------------------------------------------------------------------------------
    PLAY [all] ********************************************************************

    GATHERING FACTS ***************************************************************
    fatal: [XXXXXXXXX] => SSH Error: ssh: connect to host xxx.xxx.xxx.xxx port 22: Connection refused
    while connecting to xxx.xxx.xxx.xxx:22
    It is sometimes useful to re-run the command using -vvvv, which prints SSH debug output to help diagnose the issue.

    TASK: [git repo=git@bitbucket.org:xxxxxxxx/xxxxxxxxxxx.git dest=/var/www/xxxxxxx key_file=/home/xxxxxx/.ssh/deploy.key ssh_opts="-o StrictHostKeyChecking=no" update=yes force=yes
    ] ***
    FATAL: no hosts matched or all hosts have already failed -- aborting


    PLAY RECAP ********************************************************************
    to retry, use: --limit @/Users/xxxxxxx/update.retry

    xxxxxxxxxx : ok=0 changed=0 unreachable=1 failed=0
    -----------------------------------------------------------------------------------------------------------------------------------

    キャンセル

  • 2018/05/01 13:26

    続いて
    方法2)
    教えて頂いたようにssh-keygen で、ssh 鍵ペアを作成し、鍵を Bitbucket の Access keys に登録しました。

    git cloneを実行してみましたら、
    Cloning into 'xxxxxxx'...
    remote: Counting objects: 9077, done.
    remote: Compressing objects: 100% (3815/3815), done.
    とうまくいっているようでしたので、途中で停止し、ansibleを実行してみました。
    こちらは、方法1)より少し進んだエラーのようです。
    ----------------------------------------------------------------------------------------------------------------------------------
    PLAY [all] ********************************************************************

    GATHERING FACTS ***************************************************************
    ok: [xxxxxxxxxxxx]

    TASK: [git repo=git@bitbucket.org:xxxxxxxx/xxxxxxxxxxx.git dest=/var/www/xxxxxxx key_file=/home/xxxxxx/.ssh/deploy.key ssh_opts="-o StrictHostKeyChecking=no" update=yes force=yes
    ] ***
    fatal: [xxxxxxxxx] => ssh connection closed waiting for a privilege escalation password prompt

    FATAL: all hosts have already failed -- aborting

    PLAY RECAP ********************************************************************
    to retry, use: --limit @/Users/xxxxxxxx/update.retry

    xxxxxxxxx : ok=1 changed=0 unreachable=1 failed=0
    ----------------------------------------------------------------------------------------------------------------------------------

    キャンセル

check解決した方法

0

もう一度環境を整理します。
一旦、クローズします。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

0

BitBucketでは無料プランでもプライベートリポジトリが持てますが、(5ユーザまで、だったかな?)それではだめなんでしょうか

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2018/04/29 09:42

    現在も無料プランで使用しています。通常は、非公開のままansibleが使えるのでしょうか?

    キャンセル

  • 2018/04/29 09:55 編集

    改めてエラーメッセージを読むと(イマサラw)、デプロイキーが違う、というのでおちてるようですんで、
    当該ファイルをユーザフォルダから読んでるようですが、これをansibleが読める他のフォルダから読むようにすればどうでしょう

    #公開だといける、ってのがいぜん謎ですが
    #ああ、公開だとキーがいらないんぢゃん

    キャンセル

  • 2018/04/29 17:25

    回答ありがとうございます。
    ansibleが読めるフォルダからやっているのです。
    おそらく鍵の登録の方法?が間違っている為に、bitbucketのリポジトリが非公開の場合は、エラーになっているようなのです。

    キャンセル

  • 2018/04/29 17:49

    そのMacローカルからのときと同じキーを指定してます?
    違うキーを指定してるから弾かれるんでは

    キャンセル

15分調べてもわからないことは、teratailで質問しよう!

  • ただいまの回答率 90.83%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

関連した質問

同じタグがついた質問を見る

  • Ubuntu

    1201questions

    Ubuntuは、Debian GNU/Linuxを基盤としたフリーのオペレーティングシステムです。

  • BitBucket

    153questions

    BitBucketは無料のリポジトリ管理ホスティングサービスです。 MercurialとGitのVCSに対応しています。プライベートリポジトリを、制限なく作成することが可能です。

  • Ansible

    140questions

    Ansibleは、Python で書かれたサーバーの設定を管理するための 構成管理ツールです。