web-dev-qa-db-ja.com

GitHubがSSH経由のHTTPSを推奨するのはなぜですか?

GitHubサイトにリンクがあります...

https://help.github.com/articles/generating-ssh-keys

…そして….

推奨されているHTTPS方式を使用しないことにした場合は、SSHキーを使用してコンピュータとGitHub間の安全な接続を確立できます。以下の手順でSSHキーを生成し、公開キーをGitHubアカウントに追加します。

なぜHTTPSが推奨される方法ですか? SSH方式には何らかのセキュリティ上の欠陥がありますか?それとも遅いですか? SSHキーを作成したので、セキュリティ上の問題を軽減できますか?

279
John Livermore

GitHubは何度かその勧告を変更しました( example )。

彼らは現在HTTPSを推奨しているようです。なぜならそれは最も広範囲のネットワークとプラットフォーム上で設定するのが最も簡単であり、そしてこれらすべてに不慣れなユーザーによってです。

SSHに本質的な欠陥はありません(それらがそれを無効にしていた場合) - 以下のリンクで、あなたはまだSSH接続に関する詳細も提供していることがわかるでしょう:

  1. HTTPSがファイアウォールによってブロックされる可能性は低くなります。

    https://help.github.com/articles/which-remote-url-should-i-use/

    Https://のクローンURLは、パブリックおよびプライベートのすべてのリポジトリで利用できます。これらのURLは、ファイアウォールやプロキシの内側にいる場合でも、あらゆる場所で機能します。

  2. HTTPS接続はcredential.helperがあなたのパスワードをキャッシュすることを可能にします。

    https://help.github.com/articles/set-up-git

    知っておくと便利なこと:クレデンシャルヘルパーは、HTTPSレポURLを複製した場合にのみ機能します。代わりにSSHリポジトリURLを使用すると、SSHキーが認証に使用されます。お勧めしませんが、この方法を使用したい場合は、このガイドをチェックしてSSHキーを生成して使用してください。

161
k107

HTTPSはすべてのファイアウォールで開かれているポートであるため、GitHubではHTTPSをお勧めします。 SSHは、ネットワーク上の通信用のポートとして常に開いているわけではなく、ネットワークファイアウォールによってブロックされていることがよくあります。

そのため、GitHubリポジトリはSSHよりHTTPSを使用してより一般的にアクセス可能です。

SSH鍵は、あなたのGitHubアカウントへのアクセスを提供しないという点でより安全ですが、誰かがあなたの秘密鍵を手に入れた場合、空のリポジトリを強制的にプッシュしてあなたの変更履歴を一掃できます。

私の好みはパスフレーズで保護されたキーでSSHを使うことです。使用しているネットワークがSSHポートをブロックしている場合、SSHはHTTPS経由でトンネリングできます。

https://help.github.com/articles/using-ssh-over-the-https-port/

HTTPSを使用している場合は、アカウントとリポジトリを保護するために、2要素認証を追加することをお勧めします。

34
jr0cket

あなたが間違って引用しているか、githubが異なるページで異なる推薦をしているか、あるいは彼らは時間をかけて学んでそれらのrecoを​​更新したかもしれません。

GitHubとやり取りするときはSSH接続を使用することを強く推奨します。 SSHキーは、パスワードを使用せずに信頼できるコンピュータを識別するための方法です。以下の手順でSSHキーを生成してからGitHubアカウントに公開キーを追加します。

https://help.github.com/articles/generating-ssh-keys

11
Sid Sarasvati

また、参照してください:公式 どのリモートURLを使うべきですか? help.github.comで答えてください。

編集:

SSH URLを使用するためにパブリックリポジトリへの書き込みアクセス権が必要なくなり、元の説明が無効になったようです。

オリジナル:

明らかにHTTPS URLを支持する主な理由はSSH URLがあなたがそのリポジトリへの書き込み権限を持っていなければ公開リポジトリでは動作しないということです。

しかしながら、SSH URLの使用はプロダクションサーバへのデプロイのために推奨されます - おそらくここでのコンテキストはHerokuのようなサービスです。

8
Mark Tye

ファイアウォールでブロックされている場合にHTTPS経由のSSH接続を有効にする

HTTPSポートを介したSSHが可能かどうかをテストするには、次のSSHコマンドを実行します。

$ ssh -T -p 443 [email protected]
Hi username! You've successfully authenticated, but GitHub does not
provide Shell access.

それがうまくいけば、すごい!そうでない場合は、 トラブルシューティングガイド に従う必要があるかもしれません。

ポート経由で[email protected]hub.comにSSH接続できる443場合は、SSH設定を上書きしてGitHubへの接続をそのサーバーとポート経由で実行させることができます。

Sshの設定でこれを設定するには、~/.ssh/configのファイルを編集して、以下のセクションを追加してください。

Host github.com
  Hostname ssh.github.com
  Port 443

GitHubにもう一度接続することでこれが機能することをテストできます。

$ ssh -T [email protected]
Hi username! You've successfully authenticated, but GitHub does not
provide Shell access.

From GitHubへの認証/ HTTPSポートを介したSSHの使用

4
mja

SSHキーを使った認証は、新しいSSHキーを生成するよりも定期的にパスワードを変更する傾向があるため、安全性が低いと主張することができます。

与えられたSSHキーを尊重する寿命を制限するサーバーは、SSHキーを定期的に更新することをユーザーに強制するのに役立ちます。

0
benhorgen