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

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

新規登録して質問してみよう
ただいま回答率
85.49%
Ubuntu

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

Ansible

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

BitBucket

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

Q&A

解決済

3回答

443閲覧

bitbucketの公開について。

mizutama72

総合スコア31

Ubuntu

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

Ansible

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

BitBucket

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

0グッド

0クリップ

投稿2018/04/28 08:51

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などはできます。

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

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

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

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

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

CHERRY

2018/04/28 12:49 編集

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

2018/04/29 00:36 編集

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

回答3

0

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 05:33

編集2018/04/29 06:33
CHERRY

総合スコア25171

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

mizutama72

2018/04/29 08: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. --------------------------------- 詳しく教えてくださったのに、なんだか申し訳ありません。 この先で何か方法がありましたら、ご教授頂けると助かります。
CHERRY

2018/04/29 09: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 に登録します。
mizutama72

2018/05/01 04: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 -----------------------------------------------------------------------------------------------------------------------------------
mizutama72

2018/05/01 04: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 ----------------------------------------------------------------------------------------------------------------------------------
guest

0

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

投稿2018/04/28 12:21

y_waiwai

総合スコア87747

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

mizutama72

2018/04/29 00:42

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

2018/04/29 01:00 編集

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

2018/04/29 08:25

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

2018/04/29 08:49

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

0

自己解決

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

投稿2018/05/18 07:36

mizutama72

総合スコア31

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.49%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問