Вопрос по github, git, ssh, https – Почему GitHub рекомендует HTTPS через SSH?

272

На сайте GitHub есть ссылка ...

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

... и говорится ...

If you have decided not to use the recommended HTTPS method, we can use SSH keys to establish a secure connection between your computer and GitHub. The steps below will walk you through generating an SSH key and then adding the public key to your GitHub account.

Почему HTTPS рекомендуемый метод? Есть ли какой-то недостаток безопасности в методе SSH или он медленнее? Я создал ключ SSH, так что это уменьшит проблемы безопасности?

Меньше конфигурации, значит, проще. Кроме того, в некоторых операционных системах по умолчанию даже не установлены клиенты SSH. katspaugh
Для будущих пользователей, которые находят эту ветку: GitHub изменил свою политику и теперь говорит: «Мы настоятельно рекомендуем использовать SSH-соединение при взаимодействии с GitHub». beardedlinuxgeek
URL-адреса SSH раньше использовались по умолчанию, а теперь HTTPS. Fred Foo
@ br3nt Верно. Они раньше не рекомендовали это. Затем они сделали. Тогда они больше не были. Вот почему моя ссылка на страницу archive.org beardedlinuxgeek
@ StevePomeroy, я не думаю, что "настоятельно рекомендую" заявление существует в этом месте. Noel Abrahams

Ваш Ответ

7   ответов
-3

потому, что сложнее украсть пароль из вашего мозга, чем украсть ключевой файл с вашего компьютера (по крайней мере, насколько мне известно, возможно, некоторые вещества уже существуют или методы, но это бесконечное обсуждение)? И если вы защищаете ключ паролем, то вы снова используете пароль и возникают те же проблемы (но некоторые могут утверждать, что вам нужно проделать дополнительную работу, потому что вам нужно получить ключ, а затем взломать пароль).

27

потому что это порт, который открыт во всех брандмауэрах. SSH не всегда открыт в качестве порта для связи в сети и часто блокируется сетевыми брандмауэрами.

Таким образом, репозиторий GitHub более универсально доступен с использованием HTTPS, чем SSH.

Ключи SSH более безопасны в том смысле, что они не предоставляют доступ к вашей учетной записи GitHub, хотя, если кто-то завладеет вашим личным ключом, он может принудительно нажать пустое хранилище и стереть вашу историю изменений.

Я предпочитаю использовать SSH с ключом, защищенным парольной фразой. SSH может быть туннелирован через HTTPS, если сеть, в которой вы находитесь, блокирует порт SSH.

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

Если вы используете HTTPS, я бы рекомендовал добавить двухфакторную аутентификацию, чтобы защитить вашу учетную запись, а также ваши репозитории.

& quot; хотя, если кому-то достанется ваш закрытый ключ, он может принудительно запустить пустой репозиторий и стереть вашу историю изменений & quot; - да (и было бы ужасно), но красота распределенных кодовых баз позволяет нам восстанавливаться с тем, у кого есть хотя бы его копия.
153

пример).

Похоже, что в настоящее время они рекомендуют HTTPS, потому что его проще всего настроить в самых разных сетях и платформах, а также для пользователей, которые являются новичками во всем этом.

В SSH нет недостатка (если они там отключены) - по ссылкам ниже вы увидите, что они по-прежнему предоставляют информацию о SSH-соединениях:

HTTPS is less likely to be blocked by a firewall.

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

The https:// clone URLs are available on all repositories, public and private. These URLs work everywhere--even if you are behind a firewall or proxy.

An HTTPS connection allows credential.helper to cache your password.

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

Good to know: The credential helper only works when you clone an HTTPS repo URL. If you use the SSH repo URL instead, SSH keys are used for authentication. While we do not recommend it, if you wish to use this method, check out this guide for help generating and using an SSH key.

Я думаю, что https облегчает людям начало работы, так как вам не нужно заниматься генерацией / копированием / вставкой ключей ssh. Также его можно рассматривать как более безопасный с точки зрения Github, поскольку злоумышленник, который получил ваш пароль ssh (или обнаружил, что компьютерный терминал, который вы оставили открытым), все равно должен знать ваш пароль Github, чтобы что-то выдвинуть.
Ах, они рекомендуют HTTPS просто, чтобы им не приходилось документироватьssh-agent? Справедливо. Спасибо!
@sarnold Вероятно, это больше связано с объемом вопросов, связанных с ssh-agent и управлением открытым ключом, а также с количеством корпоративных брандмауэров, которые разрешают исходящий HTTP / HTTPS, но не SSH.
Я думаю, что это почти полностью связано с уменьшением объема запросов поддержки, которые они получают. Я полагаю, вы также можете утверждать, что, так как выhave чтобы в любом случае ввести свой пароль через HTTPS для доступа к веб-сайту, вы не можетеincreasing безопасность, используя другой механизм аутентификации (ключи SSH), но возможно вы увеличиваете поверхность атаки, которая можетdecrease безопасность. Тем не менее, HTTPS и SSH должны быть надлежащим образом защищены при правильном использовании.
@kristi Если злоумышленник обнаружит, что этот терминал до истечения срока действия кэша паролей, не сможет ли он все же нажать, даже если он не знает пароль? Вопрос примерно такой же, если вы используете ssh-agent, очевидное отличие состоит в том, что вам нужно вводить пароль ключа ssh вместо пароля github (и, похоже, нет очевидных настроек для истечения срока действия кэша). Идея ввести пароль github вместо пароля ssh-ключа кажется шагом назад, хотя и небольшим, поскольку мощность, которую дают вам две клавиши, примерно одинакова для AFAIK.
8

Какой удаленный URL я должен использовать? ответ на help.github.com.

EDIT:

Кажется, что больше нет необходимости иметь доступ на запись в публичный репозиторий для использования URL-адреса SSH, что делает мое первоначальное объяснение недействительным.

ORIGINAL:

Очевидно, что основной причиной предпочтения HTTPS-URL-адресов является то, что SSH-URL не будет работать с публичным репо, если у вас нет прав на запись в это репо.

Однако использование SSH-URL рекомендуется для развертывания на производственных серверах - предположительно, контекст здесь относится к таким сервисам, как Heroku.

@ Сэм. Возможно, это уже не так, но было правдой, когда я ответил на вопрос. Я отредактировал свой ответ, чтобы отразить изменение.
& quot; Эти URL предоставляют доступ к хранилищу git по SSH. Чтобы использовать эти URL-адреса, у вас должен быть доступ на запись в публичный репозиторий или любой доступ к частному репозиторию. Эти URL не будут работать с общедоступным хранилищем, к которому у вас нет прав на запись & quot; - ЭТО НЕПРАВДА. Любой может клонировать публичное репо с URL-адресом SSH, к которому у них нет прав на запись
В самом деле. Вопрос "Как GitHub рекомендует HTTPS поверх SSH"? было бы бессмысленным.
0

что использование ключа SSH для аутентификации менее безопасно, потому что мы склонны менять наш пароль более периодически, чем мы генерируем новые ключи SSH.

Серверы, которые ограничивают срок службы, для которого они предоставляют данные ключи SSH, могут помочь пользователям периодически обновлять SSH-ключи.

В настоящее время считается плохим советом, чтобы пользователи периодически меняли свои пароли. Правительства Великобритании считают:ncsc.gov.uk/articles/problems-forcing-regular-password-expiry
3
Enabling SSH connections over HTTPS if it is blocked by firewall

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

Если это сработало, отлично! Если нет, возможно, вам нужно следовать нашимруководство по устранению неполадок.

Если вы в состоянии SSH в[email protected] через порт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.

ОтАутентификация на GitHub / Использование SSH через порт HTTPS

11

либо у github есть разные рекомендации на разных страницах, либо они могут со временем выучить и обновить свои рекомендации.

We strongly recommend using an SSH connection when interacting with GitHub. SSH keys are a way to identify trusted computers, without involving passwords. The steps below will walk you through generating an SSH key and then adding the public key to your GitHub account.

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

Все еще используют & quot; рекомендованный & quot; для HTTPS по следующей ссылке:help.github.com/articles/which-remote-url-should-i-use/… & quot; Клонирование по URL-адресам HTTPS (рекомендуется) & quot;
К сожалению, эта страница больше не содержит «настоятельно рекомендую» текст цитируется в этом ответе.

Похожие вопросы