書こうと思ってて忘れてたやつ。
Github に接続できない
[user@oldhost ~]$ ssh -T git@github.com no kex alg
古いアルゴリズムがサポートされなくなった
github 君は「前々から告知してたよなぁ……?」という体で、それは正しいんじゃがワイも「気付いてなかった、そんなの……」状態であった。
具体的にどうなのか
- TLSv1/TLSv1.1 - This applies to all HTTPS connections, including web, API, and git connections to https://github.com and https://api.github.com.
- diffie-hellman-group1-sha1 - This applies to all SSH connections to github.com.
- diffie-hellman-group14-sha1 - This applies to all SSH connections to github.com.
これだけだとよくわかんねぇな?ってなると思いますが、要は CentOS5 以前の環境では OpenSSL
が古いので、新しい TLS をサポートしてなく、 github と通信できなくなりました。
CentOS6 も OpenSSL
をアップデートしてないと多分通信できません。最新版まで上げてあれば大丈夫。 OpenSSL 1.0.0
のいくつ位があれば大丈夫だったかは失念しましたね……。
確認方法
以下のようにコマンド叩いて、 error
が返って来なければ大丈夫です。
オッケーなパターンもだいぶ OpenSSL 古くないか?!ってご指摘があるかと思いますが、手元の検証用環境なんで許してクレメンス。
CentOS 5 + OpenSSL 0.9.8l
だめなパターン
[USER@localhost ~]$ openssl version OpenSSL 0.9.8l 5 Nov 2009 [USER@localhost ~]$ openssl s_client -connect github.com:443 CONNECTED(00000003) 24290:error:1409442E:SSL routines:SSL3_READ_BYTES:tlsv1 alert protocol version:s3_pkt.c:1061:SSL alert number 70 24290:error:1409E0E5:SSL routines:SSL3_WRITE_BYTES:ssl handshake failure:s3_pkt.c:530:
CentOS 6 + OpenSSL 1.0.1e-fips
オッケーなパターン
[USER@localhost ~]$ openssl version OpenSSL 1.0.1e-fips 11 Feb 2013 [USER@localhost ~]$ openssl s_client -connect github.com:443 CONNECTED(00000003) depth=2 C = US, O = DigiCert Inc, OU = www.digicert.com, CN = DigiCert High Assurance EV Root CA verify return:1 depth=1 C = US, O = DigiCert Inc, OU = www.digicert.com, CN = DigiCert SHA2 Extended Validation Server CA verify return:1 depth=0 businessCategory = Private Organization, 1.3.6.1.4.1.311.60.2.1.3 = US, 1.3.6.1.4.1.311.60.2.1.2 = Delaware, serialNumber = 5157550, C = US, ST = California, L = San Francisco, O = "GitHub, Inc.", CN = github.com verify return:1 # snip #
どうする
OpenSSL をアップデートするか、環境を投げ捨てるのが一番です。
とはいえそうそうすぐに捨てられない人もいるでしょう。 その場合は、自分のローカルに適応したい環境と同じプロジェクトを持っておき、毎回差分のあるファイルを zip なりで scp するのが良いでしょう。 rsync も考えたけど、本番とローカルじゃ多分値変わるからね……。