ホンモノのエンジニアになりたい

ITやビジネス、テクノロジーの話を中心とした雑記ブログです。

Bitbucketに繋がらなくなった(2020年3月)

 

掲題の通り、Bitbucketへ接続できなくなったので調べながら何とかしたお話です。 

 

 

0.先にまとめ

次項よりアレコレと調べたことを書いていきますが、先にまとめておきます。

  • BitbucketにIPv6で接続しに行くとタイムアウトする
  • SSHのconfigでIPv4接続を強制すると直る

 

1.状況整理

1.1. 環境周り

私の開発環境は以下のようになっています。

開発環境-> ローカルPCに立てているVM
本番環境-> 某社VPSのサーバ

$ cat /etc/centos-release
CentOS Linux release 7.5.1804 (Core)

 

開発環境でコードを書いてBitbucketにプッシュ、本番環境でプルという形です。

 

1.2. 発生した事象

いつも通り開発環境でテストしてからプッシュ、これはオッケー、うまくいきました。続いて本番環境でプルしたところ、メッセージは何も表示されず、どうもうまくBitbucket側に接続できていない様子。ターミナル上は以下のような感じでカーソルが点滅してるだけ。何も表示されませんでした。 

# git pull origin master

 

SSHで接続してみても同様の事象が発生。山のように動かない。

# ssh -T bitbucket.org

 

なんだかなーと思いながら、そのまま20分ほど放置していると、このように表示されました。 

# ssh -T bitbucket.org
Warning: Permanently added the RSA host key for IP address '18.205.93.0' to the list of known hosts. logged in as hogefuga You can use git or hg to connect to Bitbucket. Shell access is disabled

 

なんか分からないけど、known_hostリストに追加された?

 

ふーん、じゃあまぁ直ったんかなぁ、と思ってもう一度SSH接続してみると、また20分かかる。

 

上のメッセージを信用して、ログインできてるからオッケーと考えたとしても、毎回20分待ちはいやなので何とかしたい。 

 

2.調べたこと

2.1. sshクライアントおかしくなってないよね?

無いとは思うけど、何かしたときにsshクライアントを消しちまったのか?と思ったので、念のために確認。sshコマンドで即エラーにならない時点で絶対消えてはいないのだけど。 

$ yum list installed | grep ssh

openssh-clients.x86_64 7.4p1-16.el7 @anaconda

ちゃんと入ってる。だよねー

 

2.2. sshコマンドのverboseオプションを付けて実行

SSHクライアントの詳細表示オプションがあるはずと思い、調べてやってみました。

# ssh -Tv bitbucket.org

OpenSSH_7.4p1, OpenSSL 1.0.2k-fips 26 Jan 2017
debug1: Reading configuration data /home/fuga/.ssh/config
debug1: /home/fuga/.ssh/config line 1: Applying options for bitbucket.org
debug1: Reading configuration data /etc/ssh/ssh_config
debug1: /etc/ssh/ssh_config line 58: Applying options for *
debug1: Connecting to bitbucket.org [2406:da00:ff00::6b17:d1f5] port 22.

 

ここで止まる。読んでほしいconfigファイルは適切に読んでくれています。で、接続するところでひたすら時間がかかっている。

 

サーバ側のレスポンスが悪くなってるのか?

いやいや開発環境からはサクッと接続できておりますがな。

 

2.3. known_hostsと接続先

まずうまくいっている開発環境。

# cat ~/.ssh/known_hosts

bitbucket.org,18.205.93.0 ssh-rsa AAAA************

 

こっちはひたすら時間のかかる本番環境。

# cat ~/.ssh/known_hosts

bitbucket.org,2406:da00:ff00::22cd:e0db ssh-rsa AAAA************

 

むむむ、IPv6・・・?なにか匂うぞ。ググってみました。

We've recently enabled IPv6 for Bitbucket access, and this change may cause some users trouble to access Bitbucket.

・・・

Last modified on Feb 3, 2020

 

2020年1月に触ったときは特に何も問題ありませんでした。そして2月にBitbucket側で↑の変更があって、いま3月ですと。IPv6対応でアドレスが変わって、known_hostsに存在しないサーバとして認識されたということでひょうか?

 

だとしても、20分かかるってところは何とも腹落ちしない。とりあえず上のリンクでは、IPv4で繋ぐにはこうしろというのがあるので言われた通りにやってみましょう。えーと、hostsにこいつを追加すると。

104.192.143.3 bitbucket.org

 

で、もういちど接続テスト。

$ ssh -Tv bitbucket.org
OpenSSH_7.4p1, OpenSSL 1.0.2k-fips 26 Jan 2017
debug1: Reading configuration data /home/fuga/.ssh/config
debug1: /home/fuga/.ssh/config line 1: Applying options for bitbucket.org
debug1: Reading configuration data /etc/ssh/ssh_config
debug1: /etc/ssh/ssh_config line 58: Applying options for *
debug1: Connecting to bitbucket.org [104.192.143.3] port 22.
debug1: connect to address 104.192.143.3 port 22: Connection timed out
ssh: connect to host bitbucket.org port 22: Connection timed out

 

「ふむ、納得できないけど出来た」となるかと思いきや、タイムアウト。

 

一応逆引きで確認しました。

$ dig -x 104.192.143.3

(中略)
;; ANSWER SECTION:
3.143.192.104.in-addr.arpa. 60 IN PTR bitbucket.org

 

やっぱり接続先のサーバに依存してるのかしら?だとしたら、問題が起きていない開発環境のサーバがアクセスしているアドレス(18.205.93.0)だとうまくいくのでは?

これ↓を/etc/hostsに追加。

# /etc/hosts

18.205.93.0 bitbucket.org

 

 カタカタ、ターンッ!

$ ssh -T bitbucket.org
logged in as hogefuga

You can use git or hg to connect to Bitbucket. Shell access is disabled

サクッと接続がとれますた。

 

どうも接続先サーバによってレスポンスタイムがだいぶ違うようです。IPv6の詳細仕様までは覚えていませんが、v6の方が遅いって話はなかったような気がするし、あったとしても20分の差が出るとは思えない。たまたまv6アドレスで接続しているサーバが遅いって感じなんじゃないだろうか。

 

Windowsからnslookupするとこんな感じになる。 

>nslookup bitbucket.org

(中略)
権限のない回答:
名前: bitbucket.org
Addresses: 2406:da00:ff00::3403:4be7
2406:da00:ff00::22c0:3470
2406:da00:ff00::34cc:ea4a
2406:da00:ff00::6b17:d1f5
2406:da00:ff00::22c3:9b0a
2406:da00:ff00::22c5:2ef4
2406:da00:ff00::22cd:e0db
2406:da00:ff00::22e9:9f55
18.205.93.2
18.205.93.0         ←サクッと接続できたアドレス
18.205.93.1

 

他のアドレスへも接続を試みましたが、まともにレスポンスしてくれたのは、末尾0のIPv4アドレスだけでした。現状、このアドレスに繋ぎに行かないといけない状況のようです。

 

3.解決策

前項でhostsにべた書きしましたけど、そのままじゃちょっとマズイですよね。Bitbucket側のアドレスが変わったらまた接続できなくなるし。

 

さて、どうしたもんかい、、、と思っていたら、IPv6で繋ぎにいったときに接続できない事象ってのは結構前からあったっぽいです。その解決策はSSHのconfigをいじってIPv4を強制する方法。

 

こちらにマルっと書いてありました。

突然Bitbucketにgitで接続できなくなったらIPv6関連を疑ってみるとよいかも 2016/07/20 - Qiita

# vi ~/.ssh/config

Host bitbucket.org
HostName bitbucket.org
AddressFamily inet

これでうまいこと接続できるようになりました!

つーか上記リンクのQiita記事が2016年って...

 

本編はここで終わり。

 

番外.BitbucketとGithubがアップデートされてた

今回の問題を調べる中で、認識をアップデートできた部分があったのでまとめておきます。

1. Bitbucket

2020年3月24日のリリース。

以下の機能を10人以下のチームに無償提供

  • Jira Software プロジェクト管理ツール
  • Jira Core プロジェクト管理ツール
  • Confluence Wikiベースのコラボツール
  • Jira Service Desk カスタマサポート向けのツール

 

こういうのはドンドコ触っていかないと頭がついていけなくなるんだよなぁ。精進せねば

 

2. Github

こちらは2019年1月にリリースされていたもの。

  • 無料プランでもプライベートレポジトリを持てる
  • プライベートレポジトリは3人まで参加可能

 

え、、、Githubだと無料でプライベートレポジトリを持てなかったからBitbucketを使っていたのですが...いつの間にやらプライベートレポジトリを持てるようになってたのね。

 

だったらGithubに乗り換えようかしら...こいつは今後の検討課題になりますね。

 

おわり