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


334

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

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

...そしてそれは述べています...

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

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


39
構成が少ないほど、おそらく簡単になります。また、一部の劣悪なオペレーティングシステムには、デフォルトでSSHクライアントがインストールされていません。
katspaugh

45
このスレッドを見つけた将来のユーザーへ:GitHubはポリシーを変更し、「GitHubとのやり取りにはSSH接続を使用することを強くお勧めします」と述べています。
beardedlinuxgeek 14年

9
@StevePomeroy、私はその場所に「強くお勧めする」という記述はないと思います。
Noel Abrahams 2014

5
- @BonsaiOakそれはスティーブ・ポメロイがにリンクされたページ上にあるように使用さweb.archive.org/web/20140321204642/https://help.github.com/... -しかし、彼らはそれ以来の変更のように見えます。
beardedlinuxgeek 2014

5
@ br3ntそうです。彼らはそれをお勧めしませんでした。その後、彼らはしました。その後、彼らは再びしませんでした。それが、私のリンクがarchive.orgページへのリンクである理由です
beardedlinuxgeek

回答:


192

GitHubは推奨を数回変更しました()。

幅広いネットワークやプラットフォームでセットアップするのが最も簡単であり、これを初めて使用するユーザーにとって、現在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キーの生成と使用に関するヘルプを確認してください。


52
ああ、彼らは単にHTTPSを推奨しているので、文書化する必要はありませんssh-agentか?けっこうだ。ありがとう!
サルノルド2012年

74
@sarnold ssh-agentと公開鍵の管理に関連する多くの質問と、アウトバウンドHTTP / HTTPSを許可するがSSHを許可しない企業ファイアウォールの数に関係している可能性があります。
トッドA.ジェイコブス

7
ssh鍵の生成/コピー/貼り付け作業全体を行う必要がないため、httpsを使用すると人々が使い始めるのが容易になると思います。また、SSHパスワードを取得した(または開いたままのコンピューター端末を見つけた)攻撃者は、Githubのパスワードを知って何かをプッシュする必要があるため、Githubの観点からはより安全であると見なすことができます。
k107

4
@kristiパスワードキャッシュの有効期限が切れる前に攻撃者がその端末を見つけた場合、パスワードを知らなくても、攻撃者はまだプッシュできませんか?質問はssh-agentを使用する場合も同じです。明らかな違いは、githubパスワードの代わりにsshキーのパスワードを入力する必要があることです(キャッシュの有効期限の明確な設定がないようです)。sshキーパスワードの代わりにgithubパスワードを入力するという考えは、2つのキーから得られるパワーがほぼ同じであるため、小さいながらも少し後退しているように見えます。
HalilÖzgür12年

8
私は、ほぼ完全に、彼らが受けるサポートクエリの量を減らすことについてだと思います。WebサイトにアクセスするにはHTTPSを介してパスワードを入力する必要があるため、別の認証メカニズム(SSHキー)を使用しセキュリティを高めることはできないが、攻撃面を増やす可能性があると主張することもできると思います。セキュリティが低下する可能性があります。それでも、HTTPSとSSHは、適切に使用すれば十分に安全です。
Cartroo

52

HTTPSはいくつかの理由でGitHubで推奨されていると思います

1)アカウントの詳細のみが必要なため(SSHキーは不要)、どこからでも簡単に使用できます。

2)HTTPSは、すべてのファイアウォールで開いているポートです。SSHは、外部ネットワークとの通信用のポートとして常に開いているとは限りません

したがって、GitHubリポジトリは、SSHよりもHTTPSを使用してより広くアクセスできます。

私の見解では、SSHキーはそれらを作成する上で少し余分な作業をする価値があります

1)SSHキーはGitHubアカウントへのアクセスを提供しないため、キーが盗まれてもアカウントをハイジャックすることはできません。

2)SSHキーで強力なキーフレーズを使用すると、キーが盗まれた場合でも、誤用を制限できます

GitHubアカウントの認証情報(ユーザー名/パスワード)が盗まれた場合、GitHubパスワードを変更してアクセスをブロックし、すべての共有リポジトリをすばやく削除できます。

秘密鍵が盗まれた場合、誰かが空のリポジトリを強制的にプッシュし、所有している各リポジトリのすべての変更履歴を消去できますが、GitHubアカウントの内容を変更することはできません。このGitHubアカウントへのアクセス権の侵害からの回復を試みる方がはるかに簡単になります。

私の好みは、パスフレーズで保護されたキーでSSHを使用することです。コンピュータごとに異なるSSHキーを持っているので、そのマシンが盗まれたりキーが危険にさらされたりした場合、GitHubにすばやくログインしてそのキーを削除し、不要なアクセスを防ぐことができます。

使用しているネットワークがSSHポートをブロックしている場合、SSHはHTTPS経由でトンネリングできます。

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

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

ツール(エディターなど)でHTTPSを使用する場合は、そのツール構成でユーザー名とパスワードをキャッシュするのではなく、GitHubアカウントの開発者トークンを使用する必要があります。


3
「誰かがあなたの秘密鍵を手に入れたら、空のリポジトリを強制的にプッシュして変更履歴を一掃することができます」-はい(そして恐ろしいでしょう)が、分散コードベースの美しさにより、少なくともそれのコピーがあります。
Cameron

プッシュを強制できる誰かがSSHとHTTPSの差別化要因であることを私は確信していません。私があなたのユーザー名とパスワードを持っているなら、私は同様にプッシュを強制することができました。
Matt Canty

ユーザー名とパスワードを持っている場合は、すべてを削除できます(もちろん、パスワードと電子メールの連絡先を変更した後)。削除するだけの場合は、リポジトリごとに個別に強制プッシュする必要はありません。
jr0cket

https接続には特別なトークンが必要ですが、パスワードとsshキーを比較しています。
Alexey Sh。

13

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

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

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


22
FWIW、このページには、この回答で引用されている「強く推奨する」テキストは含まれていません。
スコットアイザックス

次のリンクでは、まだHTTPSに「推奨」を使用しています。help.github.com / articles / which-remote-url-should-i-use / 「HTTPS URLによるクローニング(推奨)」
JBE

10

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

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

$ ssh -T -p 443 git@ssh.github.com
Hi username! You've successfully authenticated, but GitHub does not
provide shell access.

うまくいったなら、素晴らしい!そうでない場合は、トラブルシューティングガイドに従ってください

git@ssh.github.comポート443を介してSSHで接続できる場合は、SSH設定を上書きして、GitHubへの接続をそのサーバーとポート経由で強制的に実行できます。

これをssh構成で設定するには、でファイルを編集し、~/.ssh/configこのセクションを追加します。

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

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

$ ssh -T git@github.com
Hi username! You've successfully authenticated, but GitHub does not
provide shell access.

以下からの認証のGitHubへ/ HTTPSポート上でSSHを使用します


9

また参照してください:公式はどのリモートURLを使用する必要がありますか?help.github.comで回答してください。

編集:

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

元の:

どうやらHTTPS URLを支持する主な理由は、そのリポジトリへの書き込みアクセス権がない場合、SSH URLはパブリックリポジトリで機能しないためです。

本番サーバーへのデプロイにはSSH URLの使用が推奨されますが、おそらくここでのコンテキストはHerokuのようなサービスです。


1
「これらのURLはSSH経由でgitリポジトリへのアクセスを提供します。これらのURLを使用するには、パブリックリポジトリへの書き込みアクセス権またはプライベートリポジトリへのアクセス権が必要です。これらのURLは、書き込みアクセス権がないパブリックリポジトリでは機能しません。 " - 本当じゃない。誰でも、書き込みアクセス権のないSSH URLを使用してパブリックリポジトリのクローンを作成できます
Sam

1
@Samもう本当ではないかもしれませんが、質問に答えたときは本当でした。変更を反映するために回答を編集しました。
Mark Tye 2013年

確かに。「GitHubはSSH over HTTPSをどのように推奨するのか」という質問は無意味です。
Mark Tye 2013

0

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

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


現在、ユーザーに定期的にパスワードを変更させることは悪いアドバイスと見なされています。英国政府の見解:ncsc.gov.uk/articles/problems-forcing-regular-password-expiry
nazerb

-3

おそらく、脳からパスワードを盗むよりも、コンピューターからキーファイルを盗む方が難しいためでしょう(少なくとも私の知る限り、すでにいくつかの物質が存在している、または方法はありますが、これは無限の議論です)。キーをパスワードで保護すると、パスワードが再び使用され、同じ問題が発生します(ただし、キーを取得してからパスワードを解読する必要があるため、さらに作業が必要であると主張する人もいます)。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.